我将 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 错误就会消失..
简单来说,答案就是在端口 80 的第二个服务器块中添加
default_server
,然后它就开始工作了。感谢大家的意见!
server
{
server_name somedomain.com;
listen [::]:80 default_server;
listen 80 default_server;
root /var/www/somedomain.com;
}