Nginx配置https(ssl)

一、备案域名、dns解析、ssl证书;dns、ssl可申请免费版,域名备案联系服务器厂商。这里只讲nginx配置ssl证书及配置过程遇到的一些问题。

二、nginx配置https环境

  先执行步骤11,查看nginx是否加入了ssl模块;

显示:configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
表示已加入,则忽略1-10步骤

  1、找到nginx安装环境,如安装目录:/usr/local/nginx,原包在/usr/local/nginx-1.13.7目录下

  2、切换到源码包下,  

# cd /usr/local/nginx-1.13.7

  3、进行编译,     

# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module  

  4、配置完成后,运行命令,  

# make

   如果make过程中出现如下错误:

cast between incompatible function types from ‘size_t (*)(ngx_http_script_engine_t *)’ {aka ‘long unsigned int (*)(struct <anonymous> *)’} to ‘void (*)(ngx_http_script_engine_t *)’ {aka ‘void (*)(struct <anonymous> *)’} [-Werror=cast-function-type]
 1296 |     code->code = (ngx_http_script_code_pt) ngx_http_script_full_name_len_code;

   解决办法: 

vi objs/Makefile  把 -Werrori删掉   (-Werror,它要求GCC将所有的警告当成错误进行处理)

  5、make命令执行后,不要进行make install,否则会覆盖安装。

  6、备份原有已安装好的nginx

# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

  7、停止nginx状态

# /usr/local/nginx/sbin/nginx -s stop

  8、将编译好的nginx覆盖掉原有的nginx

# cd /usr/local/nginx-1.13.7/

# cp ./objs/nginx /usr/local/nginx/sbin/

  9、提示是否覆盖,输入yes即可

  10、然后启动nginx

# /usr/local/nginx/sbin/nginx

  11、进入nginx/sbin目录下,通过命令查看模块是否加入成功

# cd /usr/local/nginx/sbin/

# ./nginx -V

三、nginx配置config;(测试用,指定端口8186,非默认端口443)

  1、新建server

server {
    listen       8186 ssl;  
    server_name  www.xxxx.com;    # 域名
    ssl_certificate www.xxxx.crt;    # 证书名称(证书放在nginx.config同级目录下,否则要填写路径)
    ssl_certificate_key www.xxxx.key;    # 证书秘钥(证书放在nginx.config同级目录下,否则要填写路径)
    ssl_session_cache    shared:SSL:1m;    # 开启缓存 大小1M
    ssl_session_timeout  5m;    # 指定客户端可以重用会话参数的时间(超时之后不可使用)
    ssl_ciphers  HIGH:!aNULL:!MD5;    # 选择加密套件
    ssl_prefer_server_ciphers  on;     # 设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件   

    location / {
        root   /home/xx/vue/;    # 页面路径
            index  index.html index.htm;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

  2、配置只能域名访问,ip访问403

  在所有server前新建server,ssl需要把证书也加上,否则域名访问也会403

server {
        listen       8186 ssl;
        server_name  _;
        return 403;
        ssl_certificate www.xxxx.crt;
        ssl_certificate_key www.xxxx.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
}

  3、检查配置并重启

# 检查配置
./nginx -t


# 重启
./nginx -s reload

 

posted @ 2022-10-18 11:36  Sんí丶頭  阅读(6830)  评论(0编辑  收藏  举报