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