我要转发的所有请求:
www.domain.com/ api / whaterver / comes / next– api .domain.com / whatever / comes / next
原因是避免www.domain.com的浏览器CORS请求api.domain.com
可能值得一提的是,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; }
感谢Ivan在此问题上为我指明了正确的方向。
Docker容器内的解析器应使用ipv6指令关闭的127.0.0.11上的Docker嵌入式DNS服务器:
server { listen 8443 ssl; server_name domain.com www.domain.com; index index.php index.html; root /var/www/base/public; location ~ ^/api/(.*)$ { resolver 127.0.0.11 ipv6=off; 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_pass https://api.domain.com/$1; } }