无法修复访问不带斜线的 URL 时 nginx 重定向到端口 8080 的问题

无法修复访问不带斜线的 URL 时 nginx 重定向到端口 8080 的问题

我一直在尝试修复这个烦人的错误,但没有成功。我按照这篇文章尝试了很多方法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。

相关内容