我正在寻找一种方法来配置 Nginx 以通过我的服务器的子域访问托管服务。这些服务和 Nginx 使用 Docker-compose 实例化。
简而言之,当输入 jenkins.192.168.1.2
时,我应该通过 Nginx 代理访问托管在 192.168.1.2
上的 Jenkins。
快速浏览一下我目前拥有的东西。 没有顶级域名它不起作用,所以它在 play-with-docker.com 上运行良好,但不是在本地,例如 192.168.1.2。
server {
server_name jenkins.REVERSE_PROXY_DOMAIN_NAME;
location / {
proxy_pass http://jenkins:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
看看我想要什么:https://github.com/Ivaprag/devtools-compose
我的总体目标是在不修改客户端 DNS 服务的情况下访问远程 docker 容器。
最佳答案
不幸的是,nginx 不支持这样的 IP 地址上的子域。
您要么必须修改客户端主机文件(您说过不想这样做)...
或者你可以像这样设置你的 nginx 重定向:
location /jenkins {
proxy_pass http://jenkins:8080;
...
}
location /other-container {
proxy_pass http://other-container:8080;
}
这将允许您在 192.168.1.2/jenkins
或者您可以尝试通过不同的端口为您的不同容器提供服务。例如:
server {
listen 8081;
location / {
proxy_pass http://jenkins:8080;
...
}
}
server {
listen 8082;
location / {
proxy_pass http://other-container:8080;
...
}
}
然后从192.168.1.2:8081/
关于docker - 子域、Nginx-proxy 和 Docker-compose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45416518/