2014-01-24 5 views
1

У меня есть два сервера AP, и я хочу настроить NGINX в качестве прокси-сервера и балансировки нагрузки.nginx не разрешает upstream

вот мой 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; 
      } 
     } 
    } 

apserver1 и apserver2 мой AP сервер и на самом деле они являются IP-адрес.

Когда я посещаю nginx через https://my.nginx.server:8445, я могу получить страницу по умолчанию контейнера AP. В моем случае это страница сервера JETTY по умолчанию. это означает, что работает NGINX.

Если что-то идет правильно, пользователь, получающий доступ к https://my.nginx.server:8445/myapp, получит страницу входа. если пользователь вошел в систему, мое приложение перенаправит пользователя на https://my.nginx.server:8445/myapp/defaultResource.

, когда я посещаю через https://my.nginx.server:8445/myapp как НЕ зарегистрированный пользователь, я могу правильно войти в систему.

, когда я посещаю через https://my.nginx.server:8445/myapp/defaultResource непосредственно как вошедший в систему пользователь, я могу получить правильную страницу.

но когда я посещаю URL https://my.nginx.server:8445/myapp как вошедшего в систему пользователя, (если правильно, то URL должен перенаправлять https://my.nginx.server:8445/myapp/defaultResource), но Nginx переводить URL в 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

Извините, не могли бы вы рассказать мне, как использовать «резольвер»? Я не совсем понимаю эту директиву – Freedom

Смежные вопросы