2014-01-24 36 views
1

我有兩臺AP服務器,我想將NGINX設置爲代理服務器和負載均衡器。nginx無法解析上游

這裏是我的nginx.conf文件:

#user nobody; 
    worker_processes 1; 

    #error_log logs/error.log; 
    #error_log logs/error.log notice; 
    #error_log logs/error.log info; 

    pid  logs/nginx.pid; 


    events { 
     worker_connections 1024; 
    } 


    http { 
     include  mime.types; 
     default_type application/octet-stream; 
     large_client_header_buffers 8 1024k; 
     log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
          '$status $body_bytes_sent "$http_referer" ' 
          '"$http_user_agent" "$http_x_forwarded_for"'; 

     access_log /var/log/nginx/access.log main; 

     sendfile  on; 
     #tcp_nopush  on; 

     #keepalive_timeout 0; 
     keepalive_timeout 650; 

     send_timeout   2000; 
     proxy_connect_timeout 2000; 
     proxy_send_timeout  2000; 
     proxy_read_timeout  2000; 
     gzip on; 
     # 
     # Load config files from the /etc/nginx/conf.d directory 
     # The default server is in conf.d/default.conf 

     map $http_upgrade $connection_upgrade { 
      default Upgrade; 
      ''  close; 
     } 

     upstream backend { 
      server apserver1:8443; 
      server apserver2:8443; 
     } 

     server { 
      listen 8445 default ssl; 
      server_name localhost; 
      client_max_body_size 500M; 
      client_body_buffer_size 128k; 
      underscores_in_headers on; 

      ssl on; 
      ssl_certificate ./crt/server.crt; 
      ssl_certificate_key ./crt/server.key; 

      location/{ 
       proxy_pass https://backend; 
       break; 
      } 
     } 
    } 

apserver1apserver2是我的AP服務器,實際上他們是IP地址。

當我通過https://my.nginx.server:8445訪問nginx時,我可以獲取AP容器的默認頁面。就我而言,它是JETTY服務器的默認頁面。這意味着NGINX的作品。

如果正確的話,訪問https://my.nginx.server:8445/myapp的用戶將獲得登錄頁面。如果用戶已經登錄,我的應用會將用戶重定向到https://my.nginx.server:8445/myapp/defaultResource

當我通過https://my.nginx.server:8445/myapp作爲NOT-logged-in用戶訪問時,我可以正確地登錄頁面。

當我通過https://my.nginx.server:8445/myapp/defaultResource作爲登錄用戶直接訪問時,我可以得到正確的頁面。

,但是當我訪問的URL https://my.nginx.server:8445/myapp作爲登錄的用戶,(如果正確的網址應重定向到https://my.nginx.server:8445/myapp/defaultResource),但nginx的網址轉換爲https://backend/myapp/defaultResource,和Chrome給我下面的錯誤:

The server at backend can't be found, because the DNS lookup failed....(omited) 

nginx,似乎沒有解決上游backend。我的配置有什麼問題?

如果我使用http而不是https,則一切順利。

任何幫助表示讚賞。

+0

你有沒有試着用'的http'代替'https'? – rednaw

+0

@rednaw thx回覆。我沒有嘗試,因爲我必須使用'https'。我更新了我嘗試過的內容,請再次檢查。 – Freedom

+0

您可以隨時嘗試查看問題是否與此相關... – rednaw

回答

1

嘗試將 「解析」 指令添加到您的配置:

http://nginx.org/r/resolver

+0

對不起,你能告訴我如何使用'resolver'嗎?我不太明白這個指令 – Freedom