本文主要讲述一下nginx对https的支持及相关的配置(本文针对CentOS7.4操作系统)。
1. 编译支持https nginx,并运行
这里因为前面我们讲述了nginx的编译(Ubuntu12.04),这里虽然系统不一样,但是差异不大。
# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
# tar -zxvf pcre-8.40.tar.gz
# wget http://zlib.net/zlib-1.2.11.tar.gz
# tar -zxvf zlib-1.2.11.tar.gz
# yum install openssl openssl-devel //头文件默认安装在/usr/include/openssl目录下
# wget http://nginx.org/download/nginx-1.10.3.tar.gz
# tar -zxvf nginx-1.10.3.tar.gz
# cd nginx-1.10.3/
# ./configure \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-pcre=../pcre-8.40 \
--with-zlib=../zlib-1.2.11 \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_sub_module
# make
# make install
# /usr/local/nginx/sbin/nginx
# ps -aux | grep nginx | grep -v grep
root 103552 0.0 0.0 45996 1120 ? Ss 17:29 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 103553 0.0 0.0 48520 1964 ? S 17:29 0:00 nginx: worker process
# /usr/local/nginx/sbin/nginx -s stop
这里要支持https,则必须添加--with-http_ssl_module
; 另外这里还添加了sub_status
模块,用于查看相应的访问记录。
2. 生成自签名证书
# openssl req -newkey rsa:2048 -nodes -keyout rsa_private.key -x509 -days 365 -out cert.crt -subj "/C=CN/ST=Guangdong/L=Shenzhen/O=test_company/OU=IT/CN=test_name/emailAddress=11111111@qq.com"
# mkdir /usr/local/nginx/conf/openssl
# cp cert.crt rsa_private.key /usr/local/nginx/conf/openssl
说明:加载SSL支持的Nginx并使用上述私钥时除去必须的口令。
3. 修改nginx配置文件
这里我们修改nginx.conf配置文件,使其支持https:
注意上面我们如果要在同一个server
块中同时配置支持http与https,则不能将ssl on
写在配置块中, ssl
必须加在443后边。这里我们用http范文没有任何问题,但是当客户端采用https访问时,出现不安全
的报错。
-
对于IE9浏览器,此时需要将该证书导入到受信任的根证书颁发机构
,然后可以正常访问。
-
对于chrome浏览器,导入证书到受信任的根证书颁发机构
,仍然会提示不安全
,仍不能正常访问(貌似只支持域名证书,不支持IP地址证书)
-
对于360浏览器,此时需要将该证书导入到受信任的根证书颁发机构
,然后可以正常访问。
-
使用curl命令访问
4. nginx http代理的配置
如下我们配置一个nginx http代理:
注意: 上面我们为了测试,将自签名的证书导入到了"受信任的根证书颁发机构",用完之后,请注意删除掉该证书。
[参看]:
-
http module参看
-
Nginx配置同一个域名http与https两种方式都可访问
-
添加自签发的 SSL 证书为受信任的根证书
-
nginx的https和http共存反向代理配置