NGINX:仅将一个端口传递给反向代理的方法

问题描述 投票:0回答:1

我将 NGINX 设置为同时侦听 80 和 443。它运行良好,并将所有流量从两个端口传递到端口 7000,以被 ASP.NET 接收,到目前为止一切顺利。

然后我注释掉了一些配置(你可以在下面看到),因为我希望HTTP端口80实际上转到7000。我希望它被NGINX正常处理,这样它就可以在

/var/www
中提供文件。但当我转到
http://somedomain.com/.well-known/acme-challenge/test.html
时,它只给出 404 错误。我怀疑它仍在试图逆流而上。关于如何绕过端口 80 的代理但保留 443 的代理有什么想法吗?

upstream somedomain.com
{
    server 127.0.0.1:7000;
}

server
{
    server_name somedomain.com;

    listen [::]:443 ssl default_server;
    listen 443 ssl default_server;

    ssl_certificate           /etc/letsencrypt/live/somedomain.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/somedomain.com/privkey.pem;
    include                   /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam               /etc/letsencrypt/ssl-dhparams.pem;

    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;

    gzip on;
    gzip_types      text/plain application/xml;
    gzip_proxied    no-cache no-store private expired auth;
    gzip_min_length 1000;
    gunzip on;

    location / {
        proxy_pass http://somedomain.com;
    }
}

server
{
    #if ($host = somedomain.com)
    #{
    #    return 301 https://$host$request_uri;
    #}

    listen 80;
    listen [::]:80;
    server_name somedomain.com;
    #return 404;

    root /var/www/somedomain.com;

    location / {
    }
}

test.html 文件位于正确的位置。还值得一提的是,/var/www/somedomain.com 也是 ASP.NET 文件所在的位置。

编辑 我认为问题的一部分可能是

http://somedomain.com/.well-known/acme-challenge/test.html
不断重定向到
https://somedomain.com/.well-known/acme-challenge/test.html
。因此,如果可以修复此自动安全重定向,也许 404 错误就会消失..

nginx nginx-reverse-proxy nginx-config
1个回答
0
投票

简单来说,答案就是在端口 80 的第二个服务器块中添加

default_server
,然后它就开始工作了。感谢大家的意见!

server
{
    server_name somedomain.com;

    listen [::]:80 default_server;
    listen 80 default_server;

    root /var/www/somedomain.com;
}
© www.soinside.com 2019 - 2024. All rights reserved.