首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于码头上的nginx配置

问关于码头上的nginx配置
EN

Stack Overflow用户
提问于 2019-12-23 14:12:49
回答 1查看 97关注 0票数 1

我是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如下所示

代码语言:javascript
复制
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

  • In default.conf,如果应用程序不能通过域名访问,但是如果更改为proxy_pass http://104.167.123.123:3001;,则可以通过域名访问它,为什么是

?

请帮帮我,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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.

  • use localhost:3000

  • 使用
  • ,并且不公开后端应用程序中的端口,因此您的后端服务不会通过nginx中的后端服务名称访问,而不需要在容器的公共ip中添加公共ip,因此不需要在配置或localhost:3000中添加公共ip。

例如

代码语言:javascript
复制
    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;
    }

码头工

代码语言:javascript
复制
web:
  image:nodejs
  command: node app.js
nginx:
  image:nginx
  ports:
    - "80:80"
  depends_on:
    - web
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59456776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档