nginx配置

配置nginx的前期准备配置nginx的前期准备

1.1.1 申请安全协议证书
申请下来的ssl证书文件解压后会有两个文件;
一个是.key一个是.pem文件这两个文件是配置https得到关键文件,把两个文件导入到/cert文件夹并记住目录地址以备后续配置使用。
记住这两个目录地址;
1.1.2 检查ssl模块
查看本机nginx是否安装了http_ssl_module模块, 如果没有安装的话要进行重新编译安装。
查看是否安装了此模块的命令为:
nginx配置
重新安装的过程见附录
安装后需要重启nginx服务命令为:/usr/local/nginx/sbin/nginx –s reload
检查配置文件是否正确:/usr/local/nginx/sbin/nginx -t
nginx配置
然后再次验证是否安装ssl成功:nginx –V
nginx配置

1.1.3查看openssl版本
命令openssl version
启用TLS1.1、TLS1.2要求OpenSSL1.0.1及以上版本,若您的OpenSSL版本低于要求,请使用 ssl_protocols TLSv1;

Ps:如果想省略/usr/local/nginx/sbin/nginx这段地址使用nginx则需要添加环境变量
vi /etc/profile
在文件末尾添加环境变量:
PATH=$PATH:/usr/local/nginx/sbin
export PATH
保存后退出然后重新加载配置文件
source etc/profile
配置完后就可以直接使用nginx来命令了
nginx配置

1.2 配置过程
配置命令
启动 /usr/local/nginx/sbin/nginx
停止 /usr/local/nginx/sbin/nginx –s quit | /usr/local/nginx/sbin/nginx –s stop
校验 /usr/local/nginx/sbin/nginx –t
重新加载配置文件 /usr/local/nginx/sbin/nginx –s reload

1.2.1修改配置文件
找到nginx的配置文件
地址在/usr/local/nginx/conf/ 文件夹中的nginx.conf
对该配置文件进行编辑:vi nginx.conf
修改ssl端口号为我们设定开放的端口号,这里假定我们端口号为9091。
接口请求的uri为:
https://loclhost:9091/xxx/xxx
添加ssl配置
nginx配置

在ssl_certificate和ssl_certificate_key中把之前存放密钥证书的目录地址填上去;
配置完后退出编辑模式

upstream nginxserver1 { 
      server  172.16.0.167:9090 ; 
      server  172.16.0.168:9090 ; 
     }

    server {
        listen       80;
        server_name  nginxserver1;
        location / { 
           proxy_pass         http://nginxserver1; 
           proxy_set_header   Host             $host:$server_port;
          proxy_set_header   X-Real-IP        $remote_addr; 
           proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for; 
       } 

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        #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 {
        listen       9091;
        server_name  nginxserver1;

        ssl_certificate      cert.pem;
        ssl_certificate_key  cert.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
    ssl_ciphers   ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers  on;

        location / {
           proxy_pass         http://nginxserver1; 
           proxy_set_header   Host             $host:$server_port;
           proxy_set_header   X-Real-IP        $remote_addr; 
           proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for; 
        }
    }
    }

使用 nginx –t 来检查配置文件是否有格式错误;
使用 nginx –s reload来重新加载配置文件启动;
调用新的https连接来测试是否成功;

配置http自动跳转
不带端口
rewrite ^(.*) https://$host$1 permanent;
带端口
https://localhost:9091$request_uri;

附录.安装ssl模块

如果没有安装openssl依赖会导致nginx的ssl模块无法使用,利用openssl version命令查看是否安装ssl,使用nginx -V查看末尾是否有ssl模块没有的话需要重新安装openssl依赖进行重新编译nginx安装。
安装openssl
yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel
重新编译nginx(回到nginx初始位置进行重新编译后赋值nginx到/usr/local/nginx/sbin/nginx中。
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-file-aio --with-http_realip_module
然后make//不要make install
备份原启动程序cp /usr/local/nginx/sbin/nginx nginx.bak
复制obj新生的启动程序覆盖原启动程序
cp /usr/local/nginx-xxx/objs/nginx /usr/localnginx/sbin/nginx
检测nginx是否有问题nginx -V

重新编译链接:
参考1
参考2
ssl模块字段含义