<div dir="ltr"><div>Игорь, на этот вопрос мне тяжело ответить..это мой первый опыт и все работало, пока не нашел эту проблему.</div>
<div> </div>
<div>По идее, я должен проксировать только php на бэкенд, а все остальное должно обрабатываться nginx.</div>
<div>Ну и еще 2 директории, которые из за апликации, надо проксировать полностью на бэкенд а там их ждет index.php</div>
<div> </div>
<div>Думал, что nginx сам разберется с типом файла (файл или директория) и добавит trailing slash , если надо.</div>
<div>И соответственно продолжит дальше обрабатывать запрос.</div>
<div> </div>
<div>Соответственно ожидал следующее:</div>
<div>- <a href="http://www.domain.com/data">www.domain.com/data</a></div>
<div>- <a href="http://www.domain.com/data/">www.domain.com/data/</a></div>
<div>- 404 (от nginx)</div>
<div> </div>
<div>В итоге вижу, что даже при /data/ idet na бэкенд и там уже ищет index.html ili index.php и дает 404 от апаче, а не от nginx.<br></div>
<div>Буду благодарен за любую помощь в данном направлении! Видимо намудрил в конфиге...</div>
<div> </div>
<div>Про location спасибо - проверю.</div>
<div> </div>
<div>Спасибо!</div>
<div> </div>
<div> </div>
<div>On Tue, Dec 09, 2008 at 06:55:31PM +0200, Alex Umansky wrote:<br><br>> Но разве, даже без слеша, nginx не должен его дополнять сам?<br><br>На основании чего nginx должен дополнять, если запрос уходит<br>к <a href="http://dynamic.domain.com">dynamic.domain.com</a> ?<br>
<br>> Я просто перевел конфиг с языка апаче на nginx...<br>> <br>> Полный конфиг этого виртуального хоста:<br>> <br>> Могу привести конф с апаче, как ето было пару недель назад<br>> <br>> Спасибо<br>> <br>
> #<a href="http://WWW.domain.com">WWW.domain.com</a><br>> server {<br>> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br>> proxy_set_header X-Forwarded-Host $http_host;<br>> proxy_set_header Host $proxy_host;<br>
> proxy_set_header X-Forwarded-Server $http_host;<br>> proxy_redirect off;<br>> <br>> client_max_body_size 0M;<br>> client_body_buffer_size 128k;<br>> client_body_temp_path /tmp;<br>
> proxy_connect_timeout 90;<br>> proxy_send_timeout 90;<br>> proxy_read_timeout 90;<br>> proxy_buffer_size 4k;<br>> proxy_buffers 4 32k;<br>> proxy_busy_buffers_size 64k;<br>
> proxy_temp_file_write_size 64k;<br>> proxy_temp_path /tmp;<br>> <br>> listen *:80;<br>> server_name <a href="http://www.domain.com">www.domain.com</a><br>> access_log /var/log/nginx/wwww_log main;<br>
> error_log /var/log/nginx/wwww_error_log debug;<br>> # rewrite_log on;<br>> <br>> location /nginx_status {<br>> root /var/www/html;<br>> stub_status on;<br>> access_log off;<br>> allow xxx.xxx.xxx.xxx;<br>
> deny all;<br>> }<br>> <br>> #MAIN LOCATION<br>> location / {<br>> root /var/www/html/;<br>> if (-f $request_filename.php) {<br>> proxy_pass <a href="http://dynamic.domain.com/" rel="nofollow">http://dynamic.domain.com</a>;<br>
> break;<br>> }<br>> }<br>> <br>> #PHP AS HTML<br>> location /user/user.php {<br>> types {}<br>> root /var/www/html;<br>> default_type text/html;<br>
> }<br>> location /user/profile.php {<br>> types {}<br>> root /var/www/html;<br>> default_type text/html;<br>> }<br>> location /user/editProfile.php {<br>
> types {}<br>> root /var/www/html;<br>> default_type text/html;<br>> }<br>> #PICS PROXY<br>> location ~* /([0-9]+)/([0-1][0-9])/ {<br>> root /var/www/html/pics;<br>
> proxy_pass <a href="http://pics-0-19.all/" rel="nofollow">http://PICS-0-19.ALL</a> <<a href="http://pics-0-19.all/" rel="nofollow">http://pics-0-19.all/</a>>;<br>> }<br>> location ~* /([0-9]+)/([2-3][0-9])/ {<br>
> root /var/www/html/pics;<br>> proxy_pass <a href="http://pics-20-39.all/" rel="nofollow">http://PICS-20-39.ALL</a> <<a href="http://pics-20-39.all/" rel="nofollow">http://pics-20-39.all/</a>>;<br>
> }<br>> location ~* /([0-9]+)/([4-5][0-9])/ {<br>> root /var/www/html/pics;<br>> proxy_pass <a href="http://pics-40-59.all/" rel="nofollow">http://PICS-40-59.ALL</a> <<a href="http://pics-40-59.all/" rel="nofollow">http://pics-40-59.all/</a>>;<br>
> }<br>> location ~* /([0-9]+)/([6-7][0-9])/ {<br>> root /var/www/html/pics;<br>> proxy_pass <a href="http://pics-60-79.all/" rel="nofollow">http://PICS-60-79.ALL</a> <<a href="http://pics-60-79.all/" rel="nofollow">http://pics-60-79.all/</a>>;<br>
> }<br>> location ~* /([0-9]+)/([8-9][0-9])/ {<br>> root /var/www/html/pics;<br>> proxy_pass <a href="http://pics-80-99.all/" rel="nofollow">http://PICS-80-99.ALL</a> <<a href="http://pics-80-99.all/" rel="nofollow">http://pics-80-99.all/</a>>;<br>
> }<br>> <br>> #FULL PROXY /BUGREPORT<br>> location / {<br>> root /var/www/html/support/bugreport;<br>> proxy_pass <a href="http://dynamic.domain.com/" rel="nofollow">http://dynamic.domain.com/</a>;<br>
> }<br>> #FULL PROXY /FEEDBACK<br>> location / {<br>> root /var/www/html/support/feedback;<br>> proxy_pass <a href="http://dynamic.domain.com/" rel="nofollow">http://dynamic.domain.com/</a>;<br>
> }<br>> <br>> #IMAGE EXPIRATION<br>> location ~* ^.+\.(jpg|jpeg|gif)$ {<br>> root /var/www/html;<br>> expires 30d;<br>> }<br>> #HTML JS CS EXPIRATION<br>
> location ~* ^.+\.(html|js|css)$ {<br>> root /var/www/html;<br>> expires 2h;<br>> }<br>> #XML EXPIRATION<br>> location ~ \.xml$ {<br>> root /var/www/html;<br>
> expires 1d;<br>> }<br>> }<br><br>В этой конфигурации есть аж три "location /", работает или второй, или третий.<br>0.7.x на дублирующиеся location'ы ругается.<br><br>#MAIN LOCATION<br>
location / {<br> root /var/www/html/;<br> if (-f $request_filename.php) {<br> proxy_pass <a href="http://dynamic.domain.com/" rel="nofollow">http://dynamic.domain.com</a>;<br> break;<br>
}<br> }<br>#FULL PROXY /BUGREPORT<br> location / {<br> root /var/www/html/support/bugreport;<br> proxy_pass <a href="http://dynamic.domain.com/" rel="nofollow">http://dynamic.domain.com/</a>;<br>
}<br>#FULL PROXY /FEEDBACK<br> location / {<br> root /var/www/html/support/feedback;<br> proxy_pass <a href="http://dynamic.domain.com/" rel="nofollow">http://dynamic.domain.com/</a>;<br>
}<br><br>> On Tue, Dec 09, 2008 at 06:08:56PM +0200, Alex Umansky wrote:<br>> <br>> > Спасибо, Игорь, но это не помогло ;-(<br>> ><br>> > Директория содержит поддиректории, никаких текстовых файлов.<br>
> > Да и это не важно..любая директория с/без пхп файлами внутри идет на<br>> бэкенд<br>> > через 301 при отсутствии слэша в конце URL<br>> ><br>> > proxy_pass срабатывает при / только.<br>> <br>
> proxy_pass работает, это видно по логу. И там же видно, что именно бэкенд<br>> возращает "Location: <a href="http://dynamic.domain.com/data/"" rel="nofollow">http://dynamic.domain.com/data/"</a>;;<br>
> Судя по приведённому конфигу, proxy_pass работать для /data не должен,<br>> так как нет файла /data/php. Стало быть приведена не та конфигурация.<br>> <br>> > Тут что-то с этим trailing slash в конце...я ожидал, что nginx сам добавит<br>
> > слеш, а в итоге - бэкенд в адрес баре и 301...<br>> <br>> Сначала 301, а лишь потом "бэкенд в адрес баре".<br>> <br>> > Спасибо<br><br>-- <br>Игорь Сысоев<br><a href="http://sysoev.ru/" rel="nofollow">http://sysoev.ru</a><br>
</div></div>