Я использую nginx в качестве интерфейса для apache2. Apache2 будет обрабатывать весь динамический контент.
Это мой основной файл, где nginx является интерфейсом для apache и все динамические страницы перенаправляются на apache2:
server {
listen 80;
root /var/www/websites/main/htdocs;
index index.html index.php index.htm;
server_name *removed*;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:81;
}
location ~ /\.ht {
deny all;
}
}
К сожалению, это приводит к возникновению цикла перенаправления с Wordpress.
Когда я использую следующую конфигурацию, веб-сайт загружается нормально, хотя nginx обрабатывает весь статический и динамический контент, что противоречит сути.
server {
listen 80;
root /var/www/websites/main/htdocs;
index index.html index.php index.htm;
server_name *removed*;
location ~* ^.+\.(ico|jpg|jpeg|gif|png|css|txt|js|flv|swf|html|htm|eot|woff|ttf|svg)$
{
access_log off;
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:81;
}
location ~ /\.ht {
deny all;
}
}
Используя инструменты разработчика Chrome, я обнаружил, что это цикл перенаправления 301. Я могу получить доступ к wp-admin без проблем.
Я понимаю, что прошло много времени с тех пор, как вы разместили свой вопрос, но если вы все еще боретесь ...
Я столкнулся с той же проблемой, что и вы, и решил ее благодаря этот блог. Насколько я могу судить, вам необходимо определить серверную часть для вашего прокси, используя модуль ngx_http_upstream_module (документация Вот). В nginx.conf включите следующие строки:
http {
[...]
upstream backend {
ip_hash;
server 127.0.0.1:8081; #or other IP-address:port config - you may add several
}
[...]
server {
[...]
location / {
try_files $uri $uri/ /index.php;
proxy_pass http://backend;
}
[...]
} # END "server"
} # END "http"
добавить в свои темы WordPress function.php ->
remove_filter('template_redirect', 'redirect_canonical');
Попробуйте вместо этого: (Src: http://wiki.nginx.org/WordPress)
location / {
try_files $uri $uri/ /index.php?$args;
}
РЕДАКТИРОВАТЬ: Я также рекомендую использовать PHP через FastCGI, а не через Apache.
Я думаю, что wordpress использует какие-то URL-адреса, ориентированные на поисковую оптимизацию, или перенаправления, поэтому вы идете как
index.php -> /nice-url -> index.php -> /nice-url
из-за вашего try_files - block.
что произойдет, если вы получите прямой доступ к /index.php? что говорят ваши журналы?
вы должны искать квитанцию о nginx-worpdress