我是Docker的新手,我有一个带有Debian 9系统的服务器,它的IP是104.167.123.123,我通过Docker安装了一个web应用程序,端口是3001,我可以通过http://127.0.0.1:3001和http://104.167.123.123:3001访问应用程序,我还可以通过这个服务器安装Nginx,default.conf如下所示
server {
listen 80;
return 500;
}
server {
listen 80;
server_name domain.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:3001;
proxy_redirect off;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}我的问题是
如何同时使IP访问和IP :端口访问返回500,现在ip访问返回500,但IP:port不是,例如104.167.123.123:3001
default.conf,如果应用程序不能通过域名访问,但是如果更改为proxy_pass http://104.167.123.123:3001;,则可以通过域名访问它,为什么是?
请帮帮我,谢谢。
发布于 2019-12-23 14:25:38
如何使IP访问和IP :端口访问返回500,现在ip访问返回500,但ip:端口不是,例如104.167.123.123:3001?
当您访问IP时,只有发送到Nginx的请求才会返回500,正如您在配置中提到的那样,但是当您尝试访问104.167.123.123:3001时,这个请求不是从Nginx路由,而是直接访问后端服务器。
In default.conf,如果proxy_pass http://127.0.0.1:3001;应用程序不能通过域名访问,但是如果更改为proxy_pass http://104.167.123.123:3001;它可以通过域名访问,为什么?
您在docker中运行Nginx,所以127.0.0.1:3000意味着Nginx容器的本地主机而不是后端容器。在使用http://104.167.123.123:3001; this时,nginx能够将此请求路由到后端服务器。
您可以通过以下操作来解决这个问题
IP:PORT.
localhost:3000
localhost:3000中添加公共ip。例如
listen 80;
server_name domain.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://web:3000;
proxy_redirect off;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}码头工
web:
image:nodejs
command: node app.js
nginx:
image:nginx
ports:
- "80:80"
depends_on:
- webhttps://stackoverflow.com/questions/59456776
复制相似问题