您的位置:首页 > 理论基础 > 计算机网络

Nginx 反向代理(http转htpps,并支持80端口继续提交post请求)

2019-03-29 15:10 211 查看

项目是一个web server + 多个client的形式,client由用户安装在自己的电脑上

由http升级为https后,我们通过在Nginx做了80端口重定向443的配置,使用户通过访问http:xxx.xxxx.com服务器时转为https:xxxx.xxxx.com

基于这样的需求我们在做了如下配置:

 

server {

listen 443;
server_name oss-test.intel.com; # 项目域名

ssl on;
ssl_certificate xxxx.crt; #(证书公钥)
ssl_certificate_key xxxx.key; #(证书私钥)

ssl_session_timeout 5m;
ssl_protocols  SSLv2 SSLv3 TLSv1;
ssl_ciphers  HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

location / {
proxy_pass      http://xxx.xxx.xxx.xxx:8000; # 后台服务 地址
}

}

server {
listen  80;
server_name  xxx.xxx.xxx.com;      # 域名
# to https
return 301 https://$server_name$request_uri;
}

 

以上配置可满足http 转 https需求,

 

可以看到当用户不指定https协议时发起请求时,nginx已经通过重定向指向了https

但是之前安装的client还是在向http发送post请求,此时就会出错,因为上面的nginx重定向会丢失post参数,转为get请求,而此api只接受post方式

解决方式  重定向于代理方式共存:

修改nginx配置 server 80部分:

server {
listen  80;
server_name  xxx.xxx.xxx.com;      # 域名
if ($request_method ~* GET) {                                    # 如果是是GET请求,直接重定向https
return 301 https://$server_name$request_uri;
}

# 否则就会直接请求后台服务器
location / {
proxy_pass      http://xxx.xxx.xxx.xxx:8000; # 后台服务 地址
}
}


 

至此,同时满足以上两种需求

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: