历史版本16 :Nginx.conf配置手册 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 问题描述

Nginx 部署后,需要修改nginx.conf文件才能使用。

1.2 解决思路

本文提供了两种配置方式:

  • 通用配置,常规即 HTTP 情况下只需要更改 IP 和端口即可使用。

  • HTTPS 负载均衡,需要一些配置的其他要求。

2. HTTP(常用配置)编辑

2.1 Nginx 通用配置文件

Nginx通用配置:nginx-通用版.conf

下载后修改文件内节点 IP 和端口,重命名为 nginx.conf,然后替换原始的/usr/nginx/conf/nginx.conf

2.2 配置文件详解

#NGINX会缓冲来自代理服务器的响应。响应存储在内部缓冲区中,

3. HTTPS编辑

3.1 配置要求

要求 https 的负载均衡(不限于 Nginx)的配置符合如下几项要求:

1)443 监听,而且转发到后端只能是从 443 进来的请求;

2)Tomcat 或者其它服务器容器不做任何ssl配置;

3)负载均衡监听 http 的 80 端口并重定向到 https443 端口;

4)WebSocket 只需要做 38889/48889(FineReport 工程为 38889,FineBI 工程为 48889)的 SSL 监听;

5)负载均衡转发到 Tomcat 前要设置请求头的 X-Forwarded-Proto 值为 https。

3.2 配置文件详解

#user  root;
...
省略部分参考http配置文件
...
    worker_connections  1024;
}


http {
     #add_header access-control-allow-Origin *;
     add_header access-control-allow-Headers X-Requested-With;
     add_header access-control-allow-Methods GET,POST,OPTIONS;
     include       mime.types;
省略..
     
    upstream FR.com {
省略..     
    }

    upstream WBS.com { 
省略..   
    }

    server {
        listen       80;
        server_name  192.168.5.232;
        underscores_in_headers on;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            rewrite ^(.*)$  https://$server_name$1 permanent;
            }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    server {  
        #FineReport工程为38889,FineBI工程为48889     
        listen       38889 ssl;
server_name  192.168.5.232;

        ssl_certificate      /mnt/hgfs/share/keys/server.crt;
        ssl_certificate_key  /mnt/hgfs/share/keys/server.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        #ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers  on;
        location / {
            proxy_request_buffering off;
            proxy_buffering off;
            proxy_connect_timeout 75;
            proxy_read_timeout 400;
            proxy_send_timeout 400;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";

            proxy_pass http://WBS.com;
         }
    }
    server {
        listen       443 ssl;
        server_name  192.168.5.232;

    #ssl on;
        ssl_certificate      /mnt/hgfs/share/keys/server.crt;
        ssl_certificate_key  /mnt/hgfs/share/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;

    #fastcgi_param HTTPS on; #attention!#


        location / {
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            
            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;
            # 把 https 的协议告知 Tomcat,否则 Tomcat 可能认为是 http 的请求
            proxy_set_header X-Forwarded-Proto $scheme;
        
            proxy_connect_timeout    75;
            proxy_read_timeout       400;
            proxy_send_timeout       400;

            proxy_pass http://FR.com;
        }
    }
}

4. 注意事项编辑

4.1 案例一

4.1.1 问题现象

用户将 JAR 包从 2019.04.03 升级到 2019.05.29 后,任意模板无法正常预览,一直处于刷新状态,但 Nginx 配置了 38888 端口后,可正常预览。

4.1.2 原因分析

埋点时 38888 端口没被转发 (非集群)导致的。

4.1.3 解决方案

用户需在 Nginx 中代理 38888 端口,监听 38888 端口,对请求中有 socket.io 的进行转发,代码如下所示:

 server {     
  listen 38888;      
  server_name 域名;
  location /socket.io/ {             
         proxy_pass http://ip:38888;          
        proxy_connect_timeout 20;          
        proxy_read_timeout 1000;        
         proxy_send_timeout 300;       
         proxy_http_version 1.1;         
         proxy_set_header Upgrade $http_upgrade;      
        proxy_set_header Connection "upgrade";    
       }      
    } 

4.2 案例二

4.2.1 问题现象

集群环境下有线网络可正常登录,无线网络登录页面空白,但是节点可以正常登录。

4.2.2 原因分析

Nginx 无权限读取数据流,报错日志信息如下图所示:

1.png

4.2.3 解决方案

修改 nginx.conf 中的用户组配置,如下图所示:

2.png