子目录设置为子域

时间:2017-02-20 13:41:50

标签: node.js reactjs nginx

我在前面有Nginx的服务器和运行reactjs应用程序的nodejs,我的应用程序被分成几个部分,我希望每个部分都有自己的子域。 例如:

http://192.168.1.1:9000/part1/ ---> http://sub1.example.com/

http://192.168.1.1:9000/part2/ ---> http://sub2.example.com/

我做了类似的事情:

server {
   listen 80;
   server_name sub1.example.com;
   root html;
   index index.html index.htm;

  location / {
           proxy_pass http://127.0.0.1:9000/part1/;
  }}

服务器在我使用此配置时工作,但是当我打开浏览器时,我遇到了错误,告诉我静态内容的问题。

服务器尝试从http://127.0.0.1:9000/part1/

获取静态内容

应该来自http://127.0.0.1:9000/

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

根据您的信息,这样的事情可能会起作用(显然重复两个子域名)

server {
    listen 80;
    server_name sub1.example.com;
    root /home/usr/react/app/build/static;
    index index.html index.htm;


    location / {
        try_files $uri $uri/ @nodejs;
    }

    location @nodejs {
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_pass http://127.0.0.1:9000/part1;
        proxy_set_header Host $host ; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

<强>解释

在这种情况下,我们首先尝试找到静态文件(如果存在)

try_files $uri $uri/ @nodejs;

如果不存在匹配的文件,那么请求将被代理到路径/part1上的Node.js服务器

proxy_pass http://nodejs/part1;