我一直在尝试修复这个烦人的错误,但没有成功。我按照这篇文章尝试了很多方法Nginx 访问不带斜杠的 URL 时重定向到 8080 端口但它仍然在那里。
我正在使用 nginx 和 apache 的反向代理。这是我的 nginx 配置文件:
server {
listen 80; ## listen for ipv4
#listen [::]:80 default ipv6only=on; ## listen for ipv6
server_name domain.com *.domain.com;
#access_log /var/log/nginx/localhost.access.log;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* \.(jpg|jpeg|png|gif|png|css|js|swf)$ {
root /var/www/html/domain/;
}
}
和 http
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access_log /var/log/nginx/access.log main;
access_log off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 15;
client_max_body_size 5M;
gzip on;
gzip_min_length 1100;
gzip_buffers 4 32k;
gzip_types text/plain application/x-javascript text/xml text/css;
proxy_cache_path /var/cached levels=2:2 keys_zone=cache:1024m inactive=1d max_size=3900m;
server_name_in_redirect off;
server_names_hash_max_size 2048;
server_names_hash_bucket_size 256;
server_tokens off;
ignore_invalid_headers on;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
reset_timedout_connection on;
connection_pool_size 256;
client_header_buffer_size 256k;
large_client_header_buffers 4 256k;
request_pool_size 32k;
output_buffers 4 32k;
postpone_output 1460;
fastcgi_hide_header X-Powered-By;
include /etc/nginx/conf.d/*.conf;
}
答案1
这可能与您的后端软件有关,它将端口 8080 写入其输出。如果没有选项可以停止这样做,您也可以通过在端口 80 上运行后端来解决问题。只需确保您明确指定nginx.conf
要监听的端口即可仅限外部 IP而后端应该监听仅限本地 IP。
在 中nginx.conf
,找到每个listen
没有任何 IP 或作为 IP 的指令0.0.0.0
,并将其更改为具有 IP:
listen 80; ## listen for ipv4
改成:
listen <your external IP>:80; ## listen for ipv4
在 apache 配置中找到每个Listen
&VirtualHost
指令并确保它们监听本地 IP 的 80 端口:
Listen 8080
改成
Listen 127.0.0.1:80
和
<VirtualHost 0.0.0.0:8080>
到
<VirtualHost 127.0.0.1:80>
最后,将proxy_pass
指令更改nginx.conf
为新的后端地址:
proxy_pass http://127.0.0.1:80/;
如果您想要有多个后端,只需将它们放在任何其他本地 IP(127.0.0.0/8)上,如下所示:
<VirtualHost 127.0.0.2:80>
<VirtualHost 127.0.0.3:80>
<VirtualHost 127.0.0.4:80>
nginx.conf
的 proxy_pass 将是:
proxy_pass http://127.0.0.2:80/;
proxy_pass http://127.0.0.3:80/;
proxy_pass http://127.0.0.4:80/;
ETC。