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; # 后台服务 地址 }
}
至此,同时满足以上两种需求
相关文章推荐
- 使用HttpWebRequest发送HTTP请求,同时支持GET/POST方式提交。
- C#实现http协议支持上传下载文件的GET、POST请求
- 用PHP模拟HTTP中的POST请求JSP网页,提交数据
- Http 模拟form表单提交Post请求
- C# Http访问帮助类,支持get post请求文件下载 [
- HTTP请求的POST方式的提交
- nginx处理post请求(http响应头部的收发)
- Multipart/form-data POST文件上传详解 理论 简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form me
- Android Http Get/Post提交请求
- 用PHP模拟HTTP中的POST请求JSP网页,提交数据
- HttpClient发送get请求,post请求,携带cookie访问,json提交
- 使用HttpWebRequest发送HTTP请求,同时支持GET/POST方式提交。
- nginx不同端口映射到80端口,http和https同时请求
- python使用urllib2提交http post请求的方法
- 使用Httpclient向百度翻译提交POST请求 接受返回的JSON字符串 实现翻译功能(2)----Httpclient使用详解
- Nginx 在POST提交数据时,报 HTTP411 Content-Length required
- C# HttpWebRequest提交post请求
- java中httpclent以post方式提交请求时,http返回码是302重定向时,不自动跳转的处理
- XMLHttpRequest的亲密接触(2.3)——post&get提交的捕获请求方法
- http提交请求中get和post的区别