Проблема с редиректом в nginx

P
На сайте с 16.07.2009
Offline
101
4788

nginx стоит как фронтенд к апачу. установил mod_rpaf, настроил nginx как reverse proxy и возникла следующая проблема:

301 редирект через htaccess добавляет в url порт. как это можно исправить?

RewriteRule ^sub$ sub/ [R=301,L] в итоге редиректит www.domain.ru/sub на www.domain.ru:8080/sub/, а надо на www.domain.ru/sub/

Кусок конфига nginx:

...

    proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;

server {
listen 80;
server_name www.domain.ru;
location / {
proxy_pass http://127.0.0.1:8080/;
}
location ~* \.(bmp|jpg|jpeg|gif|ico|png|css|doc|txt|js|zip|iso|tgz|gz|rar|bz2|7z|xls|exe|pdf|ppt|tar|wav|avi|rtf|mp3|mp4|mov|mpeg|mpg)$ {
root /var/www/;
}
}

...

upd упс, немного не туда(

Zorge.Org
На сайте с 28.01.2010
Offline
27
#1
pashatlt:
nginx стоит как фронтенд к апачу. установил mod_rpaf, настроил nginx как reverse proxy и возникла следующая проблема:

301 редирект через htaccess добавляет в url порт. как это можно исправить?

pashatlt, перенести Apache на 127.0.0.1:80?

P
На сайте с 16.07.2009
Offline
101
#2

Мне кажется нет. 80 порт слушает nginx. Статику отдает сам, а скрипты пересылает на 8080 порт, которые слушает apache.

Все работает нормально, до тех пор, пока я не добавляю настройки nginx:


proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;

Убрать тоже не получится, иначе apache не будет получать реальные ip

Zorge.Org
На сайте с 28.01.2010
Offline
27
#3
pashatlt:
Мне кажется нет. 80 порт слушает nginx. Статику отдает сам, а скрипты пересылает на 8080 порт, которые слушает apache.

Все работает нормально, до тех пор, пока я не добавляю настройки nginx:


proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;


Убрать тоже не получится, иначе apache не будет получать реальные ip

1. Установить в настройках nginx работу только на внешних интерфейсах

2. Установить в настройках Apache работу на 127.0.0.1:80 и соответствующим образом настроить nginx.conf

3. Установить для Apache mod_rpaf2

4. Настроить httpd.conf для корректного отображения IP-адресов в access.log'e Apache

Постучитесь ко мн в ICQ, если есть вопросы или необходима помощь.

Zorge.Org добавил 11.03.2010 в 20:28

Кроме того, посмотрите, нужно ли вам отключать proxy_redirect: http://sysoev.ru/nginx/docs/http/ngx_http_proxy_module.html#proxy_redirect

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий