ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Configuration problem



Igor Sysoev wrote:
On Mon, Jul 23, 2007 at 01:30:30PM +0300, Vladimir Shiray wrote:

Внизу приведен конфигурационный файл.
Тестировалось на разных версиях: 0.5.20, 0.5.28,  0.5.29

При обращении через HTTPS все работает нормально.
А обращения на нормальный HTTP для последнего "server"
посылаются на 443 порт.

Если поменять местами в конфиге, две последние группы
настроек "server", то получаем, что HTTP начинает работать
как положенно, а  HTTPS посылается на порт 80.


-----------------------------

#user  nobody;
worker_processes  3;
working_directory /var/nginx;

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

#pid        logs/nginx.pid;

events {
   worker_connections  500;
}

http {
   include       conf/mime.types;
   default_type  application/octet-stream;

   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  logs/access.log  main;

   keepalive_timeout  75;
   proxy_read_timeout 120;
   client_max_body_size 32m;
   optimize_server_names off;
   send_timeout 90;

   server {
       listen       80;

       location / {
               proxy_pass  http://62.219.8.114;
               proxy_set_header  Host  $http_host;
               proxy_set_header  X-Forwarded-For  $remote_addr;
       }
   }

   server {
       listen       443;
       server_name  www.kabbalah.info kabbalah.info;

       access_log  logs/kabbalah.info-ssl.log  main;
       error_log   logs/kabbalah.info-ssl-error.log;

       ssl                  on;
       ssl_certificate      /usr/local/nginx/ssl/www.kabbalah.info.crt;
       ssl_certificate_key  /usr/local/nginx/ssl/www.kabbalah.info.key;
       ssl_session_cache    shared:SSL:10m;
       ssl_session_timeout  10m;

       location / {
               proxy_pass  https://64.40.103.100;
               proxy_set_header  Host  $http_host;
               proxy_set_header  X-Forwarded-For  $remote_addr;
       }
   }

   server {
       listen       80;
       server_name  www.kabbalah.info kabbalah.info;

       access_log  logs/kabbalah.info-access.log  main;
       error_log   logs/kabbalah.info-error.log;

       location / {
           proxy_pass  http://64.40.103.100;
           proxy_set_header  Host  $http_host;
           proxy_set_header  X-Forwarded-For  $remote_addr;
       }
   }

}

А если явно указать порты в proxy_pass:

proxy_pass  https://64.40.103.100:443;
и
proxy_pass  http://64.40.103.100:80;

?

А какой смысл проксировать https на https и тот же сайт http на http ?

Если явно указать, то работает.
Но все работает и в случае, если не специфицировать порт в proxy_pass, а указать разные IP
(если конечно их больше одного на backend сервере)

Из обычного HTTP я убрал небольшой кусок конфига, который проксирует на совсем другой удаленный сервер. Это уменьшило пример конфига, ну и заодно скрыло смысл ... :)
Но тестирование проводилось именно на том конфиге, что я привел в письме.

Сходу задам еще небольшой вопрос. Насколько хорошо работает такая схема,
если reverse proxy и backend расположенны в совершенно разных "местах".
Пока я проблем особых не наблюдал. Волнует вопрос, как будут обрабатываться
достаточные большие uploads (ну хотя бы в десятки мегабайт).









 




Copyright © Lexa Software, 1996-2009.