правильная настройка прокси на несколько сайтов.

Vladimir Skubriev vladimir at skubriev.ru
Wed Oct 9 07:53:15 UTC 2013


Прошу прощения за такой простой вопрос.

Есть сервер с настроенным apache и несклькими Virtualhosts  внутри ЛВС:

<VirtualHost *:80>
   ServerName redmine.example.lab

   ServerAlias redmine.examplelab.com
   ServerAlias redmine
   ServerAlias redmine-dev.example.lab   # TODO remove this before 
production release

   ServerAdmin skubriev at examplelab.com

   DocumentRoot /mnt/datafs/redmine/public
   ErrorLog /mnt/datafs/log/error-redmine.log
   CustomLog /mnt/datafs/log/access-remine.log combined
   LogLevel warn

   <Directory /mnt/datafs/redmine/public>
     # This is unsecure, see
     # http://httpd.apache.org/docs/current/misc/security_tips.html
     # Protecting System Settings
     # This prevents the use of .htaccess files in all directories apart 
from those specifically enabled.
     AllowOverride all

     # Autofind resources(files) is unsecure - disable this extension by 
symbol (minus)
     Options -MultiViews
   </Directory>



   # Setup Mercurial Repos
   PerlLoadModule Apache2::Redmine
   PerlLoadModule Authen::Simple::LDAP

   WSGIScriptAlias /hg  "/mnt/datafs/config/hgweb.wsgi"
   <Location /hg >
     #Redmine auth
     PerlAccessHandler Apache::Authn::Redmine::access_handler
     PerlAuthenHandler Apache::Authn::Redmine::authen_handler
     RedmineDSN "DBI:mysql:database=redmine;host=localhost"
     RedmineDbUser "redmine"
     RedmineDbPass "redmine"

     AuthType Basic
     AuthName "exampleLab Mercurial Repository"
     Require valid-user
   </Location>

</VirtualHost>


<VirtualHost *:80>

     ServerName git.example.lab

     ServerAlias git.examplelab.com
     ServerAlias git

     ServerAdmin skubriev at examplelab.com



     ErrorLog /mnt/datafs/log/error-git.log
     CustomLog /mnt/datafs/log/access-git.log combined
     LogLevel warn


     SetEnv GIT_PROJECT_ROOT /mnt/datafs/repos/git
     SetEnv GIT_HTTP_EXPORT_ALL
     ScriptAlias / /usr/lib/git-core/git-http-backend/

     # Load Redmine.pm
     PerlLoadModule Apache2::Redmine

      <Location "/">
       AuthType Basic
       AuthName "examplelab Redmine git repositories"


       AuthUserFile /dev/null


       Require valid-user

       RedmineGitSmartHttp yes

       #Redmine auth
       PerlAccessHandler Apache::Authn::Redmine::access_handler
       PerlAuthenHandler Apache::Authn::Redmine::authen_handler
       RedmineDSN "DBI:mysql:database=redmine;host=localhost"
       RedmineDbUser "redmine"
       RedmineDbPass "redmine"
      </Location>

  </VirtualHost>

На шлюзе стоит nginx со следующей конфигурацией:

upstream backendredmine {
     server 192.168.128.11:80;
}

upstream backendredminedev {
     server 192.168.128.12:80;
}


server {
     listen   80;
     server_name redmine.examplelab.com;

     access_log  /var/log/nginx/redmineproxy.acess.log;
     error_log  /var/log/nginx/redmineproxy.error.log;

     location / {
         proxy_pass http://backendredmine;
     }
}

server {

         # http://habrahabr.ru/post/195808/

     listen   443 ssl;

     server_name redmine.examplelab.com;
     keepalive_timeout   60;

     ssl_certificate      /etc/ssl/certs/ssl-cert-snakeoil.pem;

     #private
     ssl_certificate_key  /etc/ssl/private/ssl-cert-snakeoil.key;
     ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
     ssl_ciphers  "RC4:HIGH:!aNULL:!MD5:!kEDH";
     add_header Strict-Transport-Security 'max-age=604800';


     access_log  /var/log/nginx/redmineproxy-https.acess.log;
     error_log  /var/log/nginx/redmineproxy-https.error.log;

     location / {
         proxy_pass http://backendredminedev;
     }
}

Сейчас пользователи работают через 80 порт только:

server {
     listen   80;
     server_name redmine.examplelab.com;

В дальнейшем мне нужно будет перевести всех на redmine-dev backend и 
настроить https. Т.е. чтобы пользователи при обращении 
redmine.examplelab.com могли работать как с веб мордой Redmine, с 
репозиториями git и hg по HTTP и по HTTPS

Проблема в том, что если я попытаюсь откуда нибудь из Интернет зайти на 
https://redmine.examplelab.com, то я почему то попадаю на git и вылазит 
окно авторизации. Веб морда редмаин почему то ни когда не открывается.

Я не понимаю, что вообще настраиваю.

Это можно сказать мой третий веб сервер и первый прокси.

Объясните пожалуйста какая взаимосвязь между прокси и сервером внутри 
сети на пальцах что-ли.

Что нужно почитать перед тем, как браться настраивать веб сервер? Просто 
обычно делаешь все по каким нибудь статьям в Интернет. Спору нет к 
результату приходишь. Но ясности понимания работы HTTP это не привносит.

Я конечно в курсе что есть стандарты и в Интернет много информации.

Но возможно существует какая то хорошая статья где принцип работы 
разжевывается. Было бы неплохо, если бы эта статья было про проксирование.

Спасибо.

-- 
С Уважением,
специалист по техническому и программному обеспечению,
системный администратор

Скубриев Владимир
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Россия, Ростовская область, г. Таганрог

тел. моб: +7 (918) 504 38 20
skype: v.skubriev
icq: 214-800-502
www: skubriev.ru



Подробная информация о списке рассылки nginx-ru