Reputation: 83
I'm having an issue where some redirects on a website have the proxy-pass port included, rendering them useless. My configuration is as follows:
Physical server 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";
}
}
Physical Server 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;
}
}
Generally, browsing works fine. The site is browsable as one expects. However some links that redirect (eg. after a login action), redirect to a link with the port 50493 included. So we get http://example.com:50493/index.php for example. That will not work. My question is, how do I remove the port?
From what I can tell, the forum software takes the port from the php session port variable. I've tried setting port_in_redirect off but to no avail. If it helps, the issue highlighted here: http://kb.parallels.com/en/114425 is similar.
Thank you.
Upvotes: 4
Views: 6153
Reputation: 373
try substitution on the fly
sub_filter
'example.com:50493/' 'example.com/' ;
sub_filter_once off;
this should do the trick.
Upvotes: 0
Reputation: 25701
It tells you how to fix your issue in the link you provided. Change:
<?php echo $VAR->domain->asciiName ?>:<?php echo $OPT['ssl'] ? $VAR->server->webserver->httpsPort : $VAR->server->webserver->httpPort ?>"
to
<?php echo $VAR->domain->asciiName ?>"
You have to fix this in your application rather than in Nginx.
Your application is generating links that point to port 50493 like this. Unless you're going to setup a content filter that goes through all of the HTML and replaces example.com:50493/path/of/url
with example.com/path/of/url
then you have to fix it inside the application.
Upvotes: 0