docker 子域的代理路径中的 nginx
nginx in docker proxy path to subdomain
我想要的是转发所有请求:
www.domain.com/api/whaterver/comes/next 到 -> api。域名.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/;
}
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 容器内的解析器应使用位于 127.0.0.11 的 Docker 嵌入式 DNS 服务器并关闭 ipv6 指令:
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/;
}
}
我想要的是转发所有请求:
www.domain.com/api/whaterver/comes/next 到 -> api。域名.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/;
}
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 容器内的解析器应使用位于 127.0.0.11 的 Docker 嵌入式 DNS 服务器并关闭 ipv6 指令:
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/;
}
}