项目背景: 需要做一个小程序的后台服务器; 因为线上小程序只能访问 https接口, 为了方便少修改后台服务器使用ngin作为代理:
Nginx开启SSL模块:
切换到源码包:
cd /usr/src/nginx-1.5.9
查看nginx原有的模块
/usr/local/nginx/sbin/nginx -V
在configure arguments:后面显示的原有的configure参数如下:
--prefix=/usr/local/nginx --with-http_stub_status_module
二:从新配置SSL模块:
进入nginx源码包目录,运行:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
配置完成后,运行命令make命令:
make
注意:此处不能进行make install,否则就是覆盖安装
三:替换已安装好的nginx包
替换之前先备份:
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
先停止nginx服务:
//从容停止Nginx:
/usr/local/nginx/sbin/nginx -s quit
//快速停止Nginx:
/usr/local/nginx/sbin/nginx -s stop
将刚刚编译好的nginx覆盖掉原有的nginx
cp ./objs/nginx /usr/local/nginx/sbin/
然后启动nginx,仍可以通过命令查看是否已经加入成功
/usr/local/nginx/sbin/nginx -V
此时应该显示为即配置成功:
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
证书可以自己生成,也可以在阿里云购买一个免费的.
server {
listen 443 ssl; #nginx 版本大于1.15
server_name henanhz.cn;
root html;
ssl_certificate cert/henanhz.cn.pem;
ssl_certificate_key cert/henanhz.cn.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCMSHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
location /km_server{ # 这里一定要少一个斜杠 不然会出现post请求转发成get请求
# proxy_method POST;
proxy_pass http://a.cn;
# proxy_redirect off;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header XForwarded-For $proxy_add_x_forwarded_for;
}
然后再添加一个配置: 因为https转发htpp请求默认转发到80端口.然后再转发到7070自己的服务器.
server {
listen 80;
server_name a.cn;
location /{
proxy_pass http://localhost:7070;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header XForwarded-For $proxy_add_x_forwarded_for;
}
}