Почему http://compassionpit.com/blog/ проходит через бесконечный цикл перенаправления? Вот мой файл конфигурации nginx. Сайт управляется сервером nodejs на порту 8000, а Apache обслуживает блог (wordpress) и форум (phpBB). Форум разрешается нормально, по адресу http://www.compassionpit.com/forum/ ...
server {
listen 80;
server_name www.compassionpit.org;
rewrite ^/(.*) http://www.compassionpit.com/$1 permanent;
}
server {
listen 80; # your server's public IP address
server_name www.compassionpit.com;
index index.php index.html;
location ~ ^/$ {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location @blogphp {
internal;
root /opt/blog/;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:8080;
}
location ~ ^/(forum|blog)/($|.*\.php) {
root /opt/;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:8080;
}
location ~ ^/(forum|blog) {
root /opt/;
try_files $uri $uri/ @blogphp;
}
location ~ ^/(forum|blog)/ {
root /opt/;
}
location @backend {
internal;
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ / {
root /opt/chat/static/;
try_files $uri $uri/ @backend;
}
}
Я думаю, вы, вероятно, настроили Wordpress без поддомена www в его URL-адресах, и это противоречит тому, как вы настроили Nginx (с server_name www.compassionpit.com
).
Итак, когда вы посещаете compassionpit.com/blog/ Nginx перенаправляет вас на www.compassionpit.com/blog/, этот запрос затем попадает в Wordpress, который перенаправляет вас обратно в пустой домен compassionpit.com/blog/.
Nginx, возможно, продолжает обрабатывать другие операторы if. Добавьте "разрыв" в конце операторов if
location ~ ^/(forum|blog)/($|.*\.php) {
root /opt/;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:8080;
break;
}