LINUX.ORG.RU
ФорумAdmin

nginx proxy_pass и rewrite правило!

 , , rewrite rule


0

2

Дано: debian Squeeze, iRedmail server, nginx,php5-fpm. Изначально iRedmail завязан был на Apache, но так как у меня виртуалка в облаке, решил я оптимизировать затраты и впихнуть все это дело на nginx + php-fpm. Roundcubemail перенес без проболем, а вот стандартную админку iRedadmin затащить не могу, знаний откровенно не хватает. Для начала вывод виртуального хоста nginx:

 server {
        listen          80;
        server_name mail.example.com;

        location / {
                rewrite ^ https://mail.example.com/mail permanent;
        }


        include /etc/nginx/templates/php;

   }

    server {
        listen       443;
        server_name  mail.example.com;

include /etc/nginx/templates/default;
include /etc/nginx/templates/phpmyadmin;
root /usr/share/apache2/;
index index.php index.html;




 # Alias's our /static to the static location iredadmin
        location /static        {
                alias /usr/share/apache2/iredadmin/static/;
        }

        # This passes through all other requests to the pyhton service.
        location /iredadmin/
        {
                proxy_set_header        Host    $host$uri;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_pass              http://127.0.0.1:7878/;
        }

location ~ \.php$ {
try_files $uri =404;
fastcgi_pass   unix:/tmp/wwwpool.sock;
fastcgi_cache  one;
fastcgi_cache_min_uses 3;
fastcgi_cache_valid 200 301 302 304 5m;
fastcgi_cache_key "$request_method|$host|$request_uri";
fastcgi_index  index.php;
include fastcgi_params;
fastcgi_param       SCRIPT_FILENAME  $document_root$fastcgi_script_name;
fastcgi_ignore_client_abort     on;
}

        ssl                  on;
        ssl_certificate      /etc/ssl/certs/ssl-unified.crt;
        ssl_certificate_key  /etc/ssl/private/ssl_d.key;
        ssl_session_timeout  5m;
        ssl_protocols  SSLv2 SSLv3 TLSv1;
        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers   on;
    }

SSL сертификат зарегал у StarSSL. Там разрешено добавить один сабдомен, я и добавил mail.example.com. И чтобы теперь работать с почтой и админкой сервера все оставил в doc_root=/usr/share/apache2

Вопрос в том что roundcubemail работает без проблем по адресу https://mail.example.com/mail а вот iredAdmin выплевывает окно логина но все запросы выкидывает в корень тобишь

https://mail.example.com/ireadmin/ -> окно входа с формой при нажатии «Войти» ломится на https://mail.example.com/login логично что такого там не водится, ну и 404.

Возможно ли мне, намалевать какое-то правило чтобы это дело переадресовать на https://mail.example.com/iredadmin/

iRedamin Запущен как сервис и висит на localhost:7878. понимаю, что это не очень сложно, но увы, прошу помощи. Заранее спасибо


proxy_set_header Host $host$uri;

что это? зачем? достаточно просто $host. Убери $uri.

proxy_pass http://127.0.0.1:7878/;

тут я не уверен, зачем / в конце. Получается, nginx убирает /ireadmin из запроса и передает в прокси. Попробуй убрать / и очисти кэш браузера (он кэширует редиректы).

ну и fastcgi_cache на время дебуга убери.

ssl on

это уже нельзя, надо listen 443 ssl;

Bers666 ★★★★★
()

Bers666 спасибо за ответ. Убрал кеширование fastcgi. убрал / в proxy_pass http://127.0.0.1:7878/; поставил listen 443 ssl;

proxy_set_header Host $host$uri; - тут я эксперементировал и забыл убрать, вернул на место proxy_set_header Host $host

теперь абсолютно все редиректит на https://mail.example.com/mail даже если пишешь https://mail.example.com/iredadmin -> https://mail.example.com/mail

Заранее благодарен.

woo
() автор топика
Ответ на: комментарий от woo

попробуй разобраться, почему этот питоновский сервис генерит неправильные странички. он должен вставлять правильный URL например form action=/ireadmin/login

а если не получится, то вынеси его на отдельный порт (в nginx создай еще 1 vhost на порту 8443 например), тогда даже без /ireadmin будет работать.

Bers666 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.