本文主要是介绍nginx配置http转发https请求(http接口转发或者代理https接口),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.需求场景
在nginx
中代理http
的接口一搜一大把,但是利用nginx
代理https
开头的接口却是很少,大部分都是一些重定向操作,实际使用不了,经过很多次尝试终于解决,可以将https
的接口代理到http
中为前端提供服务;
2.nginx配置
2.1.代码
server {listen 0.0.0.0:8080;server_name localhost;# ...# 前端location / {root /xxx/dist;try_files $uri $uri/ /index.html;index index.html index.htm;}# 后端location /prod-api/ {proxy_pass http://127.0.0.1:8081/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}# 第三方https接口请求# 请求http://localhost:8080/3rd/api# 等于https://www.3rd.com/apilocation /3rd/ {proxy_pass https://www.3rd.com/;proxy_ssl_verify off;proxy_set_header Host www.3rd.com;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_redirect https://www.3rd.com/ /;}# ...
}
2.2.配置说明
配置项 | 解释 |
---|---|
www.3rd.com | 只是个示例域名,实际情况根据自己的需求改动 |
location /3rd/ | 这表示该配置块将应用于以 /3rd/开头的所有请求 |
proxy_pass https://www.3rd.com/ | 这告诉Nginx将匹配的请求代理到 https://www.3rd.com/ |
proxy_ssl_verify off | 表示Nginx在代理请求到上游服务器时不会验证SSL证书 |
proxy_set_header Host jiutian.10086.cn | 设置代理请求的 Host 头信息为 www.3rd.com |
proxy_set_header X-Real-IP $remote_addr | 设置代理请求的 X-Real-IP 头信息为客户端的IP地址 |
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for | 设置代理请求的 X-Forwarded-For 头信息 |
proxy_set_header X-Forwarded-Proto $scheme | 设置代理请求的 X-Forwarded-Proto 头信息为原始请求的协议(http 或 https) |
proxy_redirect https://www.3rd.com/ / | 修改上游服务器返回的 Location 头信,当上游服务器返回一个重定向响应时(例如301或302),proxy_redirect 会将 Location 头中的原始URL(https://www.3rd.com/)替换为相对路径(/)。这意味着如果上游服务器返回一个指向 https://www.3rd.com/somepath 的重定向,客户端实际上将被重定向到 /jiutian/somepath 而不是上游服务器的路径 |
这篇关于nginx配置http转发https请求(http接口转发或者代理https接口)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!