首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头与码头-组成nginx:[emerg]主机没有发现上游"httpstat.us“在/etc/nginx/nginx.conf:21

码头与码头-组成nginx:[emerg]主机没有发现上游"httpstat.us“在/etc/nginx/nginx.conf:21
EN

Stack Overflow用户
提问于 2017-02-01 22:34:16
回答 3查看 4K关注 0票数 3

对于码头文件的这套,我有一个非常特殊的问题:

码头运行将做我想做的,而码头-撰写将不会。

我对码头工人很不满意,所以这可能是一个相当简单的问题--我提前道歉!

  • 但我就是找不到我的错误

docker run -p 80:8080 -i -t lakrids_devlakrids 172.17.0.1 - - [01/Feb/2017:23:29:36 +0000] "GET / HTTP/1.1" 200 6979 "-" "curl/7.29.0"

但是,如果我启动相同的容器与码头-撰写,我得到

docker-compose up devlakrids Recreating devlakrids Attaching to devlakrids devlakrids | 2017/02/01 23:28:19 [emerg] 11#11: host not found in upstream "httpstat.us" in /etc/nginx/nginx.conf:21 devlakrids | nginx: [emerg] host not found in upstream "httpstat.us" in /etc/nginx/nginx.conf:21 devlakrids exited with code 1

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-21 10:41:11

这就是我的一天(永远感谢伊斯特伍德先生):

在我的设计中,nginx容器作为反向代理加倍处理--并处理443件事情的安全端--允许“普通”应用服务器处理业务逻辑:

代码语言:javascript
复制
# ./docker-compose.yml
version: '2'
services:
  proxy:
    build: ./shared/proxy
    networks:
    - sand
    links:
    - devlakrids:devlakrids
    ports:
    - 80:80
    - 443:443

  # sand[kassen]
  #
  devlakrids:
    build: ./sand/current/spark
    expose:
    - "4567"
    tmpfs: /tmp
    volumes:
    - ./sand/current/:/mnt/lakrids
    - ./shared/sand/:/shared
    links:
    - sandmysql
    networks:
    - sand
    - sanddb
代码语言:javascript
复制
# ./shared/proxy/services.conf

server {
        listen 80;
        listen 443 ssl http2;
        server_name dev.lakrids.xxxx.xxx;

        # Path for SSL config/key/certificate
        ssl on;
        ssl_certificate /etc/ssl/certs/nginx/xxx.crt;
        ssl_certificate_key /etc/ssl/certs/nginx/xxxx.pem;
        include /etc/nginx/includes/ssl.conf;
        add_header Strict-Transport-Security "max-age=31536000";

        location / {
                include /etc/nginx/includes/proxy.conf;
                proxy_pass http://devlakrids:4567;
        }

        access_log off;
        error_log  /var/log/nginx/error.log error;
}
代码语言:javascript
复制
# ./shared/proxy/includes/proxy.conf
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-Proto $scheme;
proxy_buffering off;
proxy_request_buffering off;
proxy_http_version 1.1;
proxy_intercept_errors on;

这样--剩下的就是docker-compose up了;)

票数 1
EN

Stack Overflow用户

发布于 2017-02-01 22:39:48

两个可能的罪魁祸首:

  • nginx是一个有趣的野兽:如果上游下降而nginx已经在运行,那么nginx就会继续运行。但是,如果在nginx启动时无法到达上游,则后者将无法启动。要解决这个问题,您可能需要向nginx容器中添加一个启动脚本,以便在启动nginx之前对上游进行测试;
  • 尝试显式地添加links:不知何故,我们遇到了一个问题,即nginx停靠程序没有看到其他通过compose服务名称隐式定义的机器。

最后,一个真正被遗忘的选项是:您不会在显示httpstat.us服务在停靠引擎中启动的位置的文件中指定任何位置,因此,它不需要撰写就能为您工作,这实际上是令人惊讶的。

票数 2
EN

Stack Overflow用户

发布于 2017-02-01 23:16:11

从描述中可以看出,在撰写之外运行的映像可能与在撰写中运行的映像不同,或者您有不同的卷挂载。为了解决您的错误,我将使用上游定义更新您的nginx.conf:

代码语言:javascript
复制
daemon off;
worker_processes 1;
events { worker_connections 1024; }
http {
   upstream httpstat.us {
       least_conn;
       server httpstat.us:80 fail_timeout=60s max_fails=2;
   }

   sendfile on;
   server {
      listen 8080;
      server_name dev.lakrids.premier-is.dk;

      location / {
         proxy_pass http://httpstat.us/;
         proxy_set_header  X-Real-IP  $remote_addr;
      }
   }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41991088

复制
相关文章

相似问题

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