【问题标题】:Nginx on Kubernetes (99: Cannot assign requested address)Kubernetes 上的 Nginx(99:无法分配请求的地址)
【发布时间】:2019-10-11 22:03:18
【问题描述】:

所以我有我的应用程序的服务,并希望 nginx 代理到它的连接。我使用 IP 地址告诉 nginx 哪个是应用程序的服务节点端口(100.68.202.75)。问题是当豆荚启动时它给了我:

2019/05/25 17:32:38 [emerg] 1#1:bind() 到 100.71.178.70:443 失败(99:无法分配请求的地址) nginx: [emerg] bind() to 100.71.178.70:443 failed (99: Cannot assign requested address)

应用程序在具有服务的不同部署上单独运行。我只想告诉听那个服务。所以它可以重定向流量。

upstream so5098.exampler.com {
                server  100.68.202.75:8080;
               } 
   server {
        listen      80;
        server_name so5098.exampler.com masterqa-okta.exampler.com masterqapayrolltestingping.exampler.com;
        rewrite     ^(.*)   https://$host$1 permanent;
    }
        server {

        listen                  100.68.202.75:443;
        ssl                     on;
        ssl_certificate         /home/xenon/.ssl/exampler.com.crt;
        ssl_certificate_key     /home/xenon/.ssl/exampler.com.key;
        ssl_protocols TLSv1.1 TLSv1.2;
        ssl_ciphers 'TLS_RSA_WITH_AES_256_CBC_SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:AES256-SHA256:AES128+EECDH:AES128+EDH:!aNULL';
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
        server_name masterqa.exampler.com masterqa-okta.exampler.com masterqapayrolltestingping.exampler.com;
        # Upload file size limit
        client_max_body_size    50m;
        # bypass tomcat for profile images
        location ~* /masterqa/profile/[0-9]*/.*\.(jpg|jpeg|gif|png)$ {
            root /opt/documents/so5098/;
            rewrite /opt/documents/saintssecurity/docs/([0-9]*)/(.*) /$1/$2 break;
        }
    # bypass tomcat for company logos
        location ~* /so5098/logo/[0-9]*/.*\.(jpg|jpeg|gif|png)$ {
                root /opt/example/docs-branch/;
                rewrite /so5098/logo/([0-9]*)/(.*) /$1/$2 break;
        }
        # bypass tomcat for company theme
        location ~* /masterqa/companyTheme/theme/[0-9]+_.*\.css$ {
                root /opt/documents/so5098;
                rewrite /masterqa/companyTheme/theme/([0-9]*)_.*.css /$1/$1.css break;
        }

        location /so5098 {
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
            proxy_pass http://100.68.202.75:8080/so5098;
            proxy_redirect http://$host https://$host;
        }
        location /so5098/api {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8080/masterqa/api;
                }
        location / {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://100.68.202.75:8080/so5098;
                }
        }

【问题讨论】:

  • 您通常不会像那样硬连线 ip,因为 pod ip 是随机分配的。
  • 是服务的IP。你建议怎么做?

标签: linux nginx kubernetes nginx-reverse-proxy


【解决方案1】:

您应该将listen 100.68.202.75:443; 替换为listen 443 ssl;。 Pod IP 是动态的,每次重启时都会发生变化。

【讨论】:

  • 好的,对于代理传递,我应该使用哪个地址传递给 pod
  • 如果您的应用程序运行在同一个 Kubernetes 集群中,那么您最好将服务名称而不是服务 IP 放在那里。这更像是 Kubernetes 方式。
猜你喜欢
  • 2011-03-12
  • 1970-01-01
  • 2023-03-11
  • 2017-09-13
  • 2018-04-27
  • 1970-01-01
  • 2021-05-26
  • 1970-01-01
  • 2020-09-04
相关资源
最近更新 更多