使用不同端口的nginx和docker容器实现反向代理
我在不同的端口上有三个docker容器,并且希望使用nginx对每个容器实现反向代理,这样我就可以通过传递关键字而不是端口来导航到每个容器。喜欢而不是使用不同端口的nginx和docker容器实现反向代理,nginx,docker,reverse-proxy,docker-container,Nginx,Docker,Reverse Proxy,Docker Container,我在不同的端口上有三个docker容器,并且希望使用nginx对每个容器实现反向代理,这样我就可以通过传递关键字而不是端口来导航到每个容器。喜欢而不是http://localhost:3000我想像http://localhost/app1 我用下面的dockerfile创建了nginx图像 FROM nginx:alpine COPY nginx.conf /etc/nginx/nginx.conf COPY index.html usr/share/nginx/html 我的nginx c
http://localhost:3000
我想像http://localhost/app1
我用下面的dockerfile创建了nginx图像
FROM nginx:alpine
COPY nginx.conf /etc/nginx/nginx.conf
COPY index.html usr/share/nginx/html
我的nginx conf文件如下所示:
worker_processes 1;
events { worker_connections 1024; }
http {
sendfile on;
upstream app1 {
server localhost:3000;
}
upstream app2 {
server localhost:3001;
}
server {
listen 3000;
location /app1 {
proxy_pass http://localhost:3000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
server {
listen 3001;
location /app2 {
proxy_pass http://localhost:3001;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
}
但是在从图像创建nginx容器之后。我看到了创建的容器。但当我尝试使用localhost访问时,它超时了,所以nginx没有运行,或者我错过了什么。我无法加载带有localhost/app1或app2的容器,甚至localhost不工作。需要帮助。提前感谢。启动容器时,您正在暴露端口80和443,但我看不到您在nginx配置中监听这些端口 请尝试将
listen 3000
替换为listen 80
,然后尝试访问localhost/app1
在启动docker容器时,我还可以看到您正在使用--link
。因此,我认为应该使用app1
和app2
而不是localhost
。请让我知道,如果有什么我错过了,所以它不是这样的情况。您还必须确保您的应用程序可以在这些端口(3000和3001)上访问
另外,您的两个位置应位于同一服务器块中:
server {
listen 80;
location /app1 {
proxy_pass http://app1:3000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
location /app2 {
proxy_pass http://app2:3001;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
谢谢你的回答。我把它改成了80端口,但现在我得到了500端口error@Jes这通常意味着你的应用程序正在崩溃。你应该检查你的应用程序日志