我是 nginx 新手。我想重写
feature-1234.mydomain.com/xyz?foo=bar
到
docker-feature-1234:9000/xyz?foo=bar
带有请求参数。
我使用官方 nginx docker 镜像。我的 nginx.conf 文件应该是什么样子?
编辑:'feature-1234' 是一个变量,因此:
功能-5678.mydomain.com
应该作为
docker-功能-5678:9000
答案1
通过结合答案,我找到了解决方案。
https://serverfault.com/questions/388552/nginx-sub-domain-proxy-pass
https://stackoverflow.com/questions/35744650/docker-network-nginx-resolver
https://stackoverflow.com/questions/41766195/nginx-emerg-server-directive-is-not-allowed-here
nginx.conf:
events {
}
http {
server {
listen 80;
server_name ~(.*).test.go;
location / {
if ($host ~* ^([a-zA-Z0-9-]+)\.test\.go$) {
set $proxyhost docker-$1:9000;
}
resolver 127.0.0.11 ipv6=off;
proxy_pass http://$proxyhost;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
}
}
}
谢谢
答案2
站点配置文件
服务器令牌关闭;
地图 $http_upgrade $connection_upgrade { 默认升级;''
关闭;}服务器 {
设置 $access_log'var/log/nginx/my-site.access.log'; 设置 $error_log'var/log/nginx/my-site.error.log';
听 80;服务器名称 feature-1234.mydomain.com;
访问日志/$访问日志;错误日志/$错误日志;
地点 / {
proxy_pass docker-feature-1234:9000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; if ($uri != '/') { expires 30d;} access_log /$access_log; } }
粘贴
触摸/etc/nginx/sites-available/site.conf
下一个
ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled
下一个
服务 nginx 重新加载
如果你没有 root 权限,请在命令开头添加 sudo