2016-11-08 71 views
1

我想配置的Nginx做到以下几点:Nginx的配置子站点和论坛

  • 重定向example.com和www.example.com我的老网站
  • www.example.com/论坛或example.com/forum到论坛的网络服务器(IP)
  • 任何其他子域.example.com的,反向代理到Node.js的

我知道下面是不行的,我应该怎么配置?

server { 
    listen 80; 
    server_name www.example.com example.com; 

    location /forum { 
     proxy_pass http://<forum ip>/; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
    } 

    return 301 $scheme://www.old-website.com; 
} 
server { 
    listen 80; 

    server_name ~^(.*)\.example\.com $; 

    location/{ 
     proxy_pass http://localhost:3000; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
    } 
} 

回答

2

return 301将防止location /forum块被考虑。尝试它包裹默认位置块内:

location /forum { 
    ... 
} 
location/{ 
    return 301 $scheme://www.old-website.com; 
} 
+0

的/论坛返回404虽然 –

+0

NVM我的代理之前添加重写规则,谢谢 –

+0

当加载论坛我得到的所有静态文件404,因为它们是请求在裸体域而不是example.com/forum –