У меня возникла проблема, когда некоторые переадресации на веб-сайте имеют включенный прокси-порт, что делает их бесполезными. Моя конфигурация выглядит следующим образом:Удаление порта из nginx redirect
Физический сервер 1:
server {
server_name example.com www.example.com;
location/{
proxy_pass http://1.1.1.1:50493;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host "example.com";
}
}
Физический сервер 2:
server {
listen 50493;
server_name example.com www.example.com;
set_real_ip_from 1.1.1.1;
root /var/www/example.com;
index index.php index.htm index.html;
location/{
if ($http_host !~ "^example.com"){
set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
rewrite ^/(.*) http://example.com/$1 permanent;
}
rewrite /[^/]+/([0-9]+)-[^/]+.html http://example.com/showthread.php?t=$1 permanent;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/example.com$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 600s;
fastcgi_buffer_size 512k;
fastcgi_buffers 16 512k;
}
}
Вообще, просмотр работает отлично. Сайт доступен для просмотра, как и ожидалось. Однако некоторые ссылки, которые перенаправляются (например, после действия входа), перенаправляются на ссылку с портом 50493. Таким образом, мы получаем, например, http://example.com:50493/index.php. Это не будет работать. Мой вопрос: как мне удалить порт?
Из того, что я могу сказать, программное обеспечение форума берет порт из переменной порта сеанса php. Я пробовал установить port_in_redirect, но безрезультатно. Если это помогает, то проблема здесь выделена: http://kb.parallels.com/en/114425 похож.
спасибо.
привела меня на шаг ближе, и я имею решение сценария в настоящее время. Благодарю. Но так как php-fpm добавляет порт ($ _SERVER ['SERVER_PORT']), я надеюсь на исправление nginx. Я мог бы частично исправить это с помощью значения proxy_redirect, но не с уловкой. – zataived
PHP-FPM ничего не добавляет. Он правильно устанавливает _SERVER ["SERVER_PORT"] равным 50493, который является вашим компьютером, который прослушивает PHP-FPM, но это код параллелей, который добавляет его к URL-адресу. – Danack
Извинения за поздний ответ. Ответ Данака в конце концов помог мне. Я сделал условие if для $ _SERVER ['SERVER_PORT'] в моем программном обеспечении. Если php обнаруживает, что это 50493 (порт прокси), я принудительно переношу его на порт 80. – zataived