#nginx #varnish
#nginx #varnish
Вопрос:
Недавно я настроил сервер Nginx для размещения установки WordPress и использую Varnish в качестве обратного прокси-сервера перед сервером. Varnish запущен на порту 80, поэтому я настроил Nginx на прослушивание 80 и перенаправление. К сожалению, при перенаправлении к запросу nginx добавляется порт 8080.
Включение port_in_redirect off
кажется общим решением этой проблемы, но, похоже, у меня это не работает. Я прикрепил /sites-enabled/default
конфигурацию ниже. Я делаю что-то не так?! Кажется, что перенаправления php работают нормально, это только в location /
том месте, где происходит сбой.
/sites-enabled/default
:
server {
listen 8080 defau<
server_name "" xxx.xxx.xxx.xxx; #just using IP here (no domain yet)
port_in_redirect off;
server_name_in_redirect off;
access_log /var/log/nginx/localhost.access.log;
location / {
root /var/www/site/html/;
index index index.php;
try_files $uri/ $uri /index.php?q=$uriamp;$args;
}
location ~ .php$ {
fastcgi_split_path_info ^(. .php)(.*)$;
fastcgi_pass backend;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/site/html/$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_param SERVER_PORT 80;
}
location ~ /.ht {
deny all;
}
location ~ /.git {
deny all;
}
location ~ /.svn {
deny all;
}
}
upstream backend {
server 127.0.0.1:9000;
}
nginx.conf
:
user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log debug;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
multi_accept on;
}
http {
include /etc/nginx/mime.types;
access_log /var/log/nginx/access.log;
sendfile on;
tcp_nopush off;
keepalive_timeout 30;
tcp_nodelay on;
gzip on;
gzip_proxied any;
gzip_disable "MSIE [1-6].(?!.*SV1)";
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml rss text/javascript;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
nginx: версия nginx: nginx / 1.0.9
Ответ №1:
На самом деле, только что разобрал это. Простая ошибка — на сайте администратора WordPress wp-admin > Settings > WordPress address (URL)
и Site address (URL)
у обоих был порт 8080 в URL! Отсюда перенаправление. Вышеупомянутая настройка отлично работает следующим образом.
Если это не решит вашу проблему, один совет, который я узнал, заключался в том, чтобы добавить print_r($_SERVER["SERVER_PORT"]);
в ваш index.php чтобы убедиться, что вы получаете правильный порт (80 в моем случае), установленный из fastcgi.
Надеюсь, этот простой шаг может сэкономить кому-то немного времени!
Ответ №2:
Другое решение состоит в том, чтобы ваш серверный блок Nginx прослушивал ваш IP-адрес локального хоста, либо 127.0.0.1, либо [:: 1] (если у вас есть IPv6 — он также поддерживает IPv4) на порту 80 или 8080, затем пусть Varnish прослушивает внешний мир с вашего внешнего IP-адреса xx.xx.xx.xx или [::], на том же порту, который вы использовали для серверного блока Nginx. Тогда вам не нужно перенаправлять, откладывать или что-то еще.