【问题标题】:Nginx main domain requests getting forwarded to subdomainNginx 主域请求被转发到子域
【发布时间】:2019-11-18 17:55:48
【问题描述】:

我正在尝试在 digitalocean 服务器上设置一个 Angular 应用程序和一个 dotnet core web api。我已经成功地为这两个配置了设置(至少我相信我做到了)。但是有一个问题 - 所有请求,无论是 maindomain.xyz 还是 api.maindomain.xyz - 每个请求都由 api.maindomain.xyz 配置处理。

这是一种预期的行为吗?如果不是,你能帮我找到解决办法吗?

这里是 nginx 配置。


root@ubuntu-s-1vcpu-1gb-blr1-01:/etc/nginx/sites-enabled# sudo nginx -T                                                                                                
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok                                                                                                       
nginx: configuration file /etc/nginx/nginx.conf test is successful                                                                                                     
# configuration file /etc/nginx/nginx.conf:                                                                                                                            
user www-data;                                                                                                                                                         
worker_processes auto;                                                                                                                                                 
pid /run/nginx.pid;                                                                                                                                                    
include /etc/nginx/modules-enabled/*.conf;                                                                                                                             

events {                                                                                                                                                               
        worker_connections 768;                                                                                                                                        
        # multi_accept on;                                                                                                                                             
}                                                                                                                                                                      

http {                                                                                                                                                                 

# configuration file /etc/nginx/sites-enabled/api.maindomain.xyz.conf:                                                                                            
server {                                                                                                                                                               
        listen 80;                                                                                                                                                     
        server_name api.maindomain.xyz;                                                                                                                           
        return 301 https://$server_name$request_uri;                                                                                                                   
}                                                                                                                                                                      

server {                                                                                                                                                               
        listen 443;                                                                                                                                                    
        server_name api.maindomain.xyz;                                                                                                                           

        ssl_certificate           /etc/letsencrypt/live/maindomain.xyz/fullchain.pem;                                                                             
        ssl_certificate_key       /etc/letsencrypt/live/maindomain.xyz/privkey.pem;                                                                               

        ssl on;                                                                                                                                                        
        ssl_session_cache  builtin:1000  shared:SSL:10m;                                                                                                               
        ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;                                                                                                                          
        ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;                                                                                          
        ssl_prefer_server_ciphers on;                                                                                                                                  

        gzip  on;                                                                                                                                                      
        gzip_http_version 1.1;                                                                                                                                         
        gzip_vary on;                                                                                                                                                  
        gzip_comp_level 6;                                                                                                                                             
        gzip_proxied any;                                                                                                                                              
        gzip_types text/plain text/css application/json application/javascript application/x-javascript text/javascript text/xml application/xml application/rss+xml ap
lication/atom+xml application/rdf+xml;                                                                                                                                 
        gzip_buffers 16 8k;                                                                                                                                            
        gzip_disable “MSIE [1-6].(?!.*SV1)”;                                                                                                                           

        access_log  /var/log/nginx/access.log;                                                                                                                         

        location / {                                                                                                                                                   
                proxy_pass            https://localhost:5001;                                                                                                          
                proxy_http_version 1.1;                                                                                                                                
                proxy_set_header   Upgrade $http_upgrade;                                                                                                              
                proxy_set_header   Connection keep-alive;                                                                                                              
                proxy_set_header   Host $host;                                                                                                                         
                proxy_cache_bypass $http_upgrade;                                                                                                                      
                proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;                                                                                         
                proxy_set_header   X-Forwarded-Proto $scheme;                                                                                                          
        }                                                                                                                                                              
}                                                                                                                                                                      

# configuration file /etc/nginx/sites-enabled/maindomain.xyz.conf:                                                                                                
server {                                                                                                                                                               
        server_name maindomain.xyz;                                                                                                                               
        listen 80;                                                                                                                                                     
        listen [::]:80;                                                                                                                                                
        return 301 https://$server_name$request_uri;                                                                                                                   
        root /var/www/html;                                                                                                                                            
        index  index.html index.htm;                                                                                                                                   
        location ~* \.(?:html|js)$ {                                                                                                                                   
                expires -1;                                                                                                                                            
        }                                                                                                                                                              
}                                                                                                                                                                      


server {                                                                                                                                                               
        listen 443 ssl;                                                                                                                                                
        listen [::]:443 ssl;                                                                                                                                           
        root /var/www/html;                                                                                                                                            
        index  index.html index.htm;                                                                                                                                   
        ssl_certificate /etc/letsencrypt/live/maindomain.xyz/fullchain.pem;                                                                                       
        ssl_certificate_key /etc/letsencrypt/live/maindomain.xyz/privkey.pem;                                                                                     
        location ~* \.(?:html|js)$ {                                                                                                                                   
                expires -1;                                                                                                                                            
        }                                                                                                                                                              
}

为简洁起见删除了一些配置。

【问题讨论】:

  • 为什么要把ipv6监听地址只放在maindomain.xyz.conf中?
  • @akshay202 错过了。但是,我在 api.maindomain.xyz conf 中添加了这一点,但对行为没有任何影响。
  • server_name maindomain.xyz; 在最后一个服务器块中丢失(侦听 443)
  • @Mehdi 谢谢,这解决了这个问题。您能否将其发布为答案,以便我接受?

标签: nginx nginx-reverse-proxy nginx-config


【解决方案1】:

问题出在最后一个server 块中,其中缺少server_name

此块应包含以下内容,例如在listen 行下方:

server_name maindomain.xyz;

【讨论】:

    猜你喜欢
    • 2017-01-21
    • 2020-01-06
    • 2021-09-11
    • 2013-12-03
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 2015-04-04
    • 2020-04-24
    相关资源
    最近更新 更多