【发布时间】:2019-10-27 18:50:10
【问题描述】:
我想要的是转发所有请求:
www.domain.com/api/whaterver/comes/next to -> api.domain.com/whatever/comes/next
原因是为了避免 www.domain.com 向 api.domain.com 请求的浏览器 CORS
可能值得一提的是,nginx 是在 Docker 容器中运行的。
我正在尝试使用下面的位置块来完成,但它失败了:
server {
listen 8443 ssl;
server_name domain.com www.domain.com;
index index.php index.html;
root /var/www/base/public;
location ~ ^/api/(.*)$ {
proxy_set_header Host api.domain.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass https://api.domain.com/$1;
}
ssl_certificate /etc/nginx/ssl/nginx.cert;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
include /etc/nginx/conf.d/common.conf;
}
【问题讨论】:
-
你错过了
~签名:location ~ ^/api/(.*)$ { -
尝试使用
proxy_set_header Host api.domain.com;将主机标头更改为新的api.domain.com? -
而且@Zac 也是对的,我忘了HTTP
Host标头也应该更改... -
@IvanShatsky 仍然一无所获,我收到了 404 响应。添加您的两个建议。
-
@Zac 还是一无所有
标签: docker nginx nginx-location nginx-reverse-proxy