Nginx能不能监听同一端口号配置多个域名

期望效果:通过多个域名都可以访问同一个tomcat服务,比如通过https://test1.fanruan.com/https://test2.fanruan.com/两个域名都可以访问同一个FR报表服务

实现方式:

server_name配置成不同域名的即可

server {
        listen       443 ssl;
        server_name  test1.fanruan.com;
        ssl_certificate      /keys/server.crt;
        ssl_certificate_key  /keys/server.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers  on;
        location / {
            proxy_http_version 1.1;     
            proxy_buffering off;
            proxy_next_upstream http_500 http_502 http_503 http_504 http_403 http_404 http_429 error timeout invalid_header non_idempotent;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;  
            proxy_connect_timeout    75;
            proxy_read_timeout       400;
            proxy_send_timeout       400;
            proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $http_connection;
            proxy_pass http://192.168.1.2:8080;
        }
    }
server {
        listen       443 ssl;
        server_name  test2.fanruan.com;
        ssl_certificate      /keys/server.crt;
        ssl_certificate_key  /keys/server.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers  on;
        location / {
            proxy_http_version 1.1;     
            proxy_buffering off;
            proxy_next_upstream http_500 http_502 http_503 http_504 http_403 http_404 http_429 error timeout invalid_header non_idempotent;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;  
            proxy_connect_timeout    75;
            proxy_read_timeout       400;
            proxy_send_timeout       400;
            proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $http_connection;
            proxy_pass http://192.168.1.2:8080;
        }
    }

nginx能不能屏蔽PC/移动端请求

期望效果:用户通过PC端访问系统,直接报错,用户通过移动端可以正常访问系统

实现方式:

nginx在版本0.13.0中引入了对if指令的支持,如果报错,需要确认rewrite模块是否取消安装了

server
        {
        listen       8973;
        server_name  localhost;
        location / {
            if($http_user_agent ~* "Mobile|Android|iPhone|iPad|iPod") {
                proxy_pass https://cn.bing.com;
            }
        if($http_user_agent !~* "Mobile|Android|iPhone|iPad|iPod") {
                return403;
            }
        }
}

偷得浮生半日闲,心情半佛半神仙。