1. 程式人生 > >Nginx同一個域名配置多個專案

Nginx同一個域名配置多個專案

使用Nginx要在同一個域名下配置多個專案有兩種方式:

  1. nginx按不同的目錄分發給不同的專案
  2. 啟用二級域名,不同的專案分配不同的二級域名

1.nginx按不同的目錄分發給不同的專案:

server {
    listen    80;
    server_name example.com;

    location ^~ /project1 {
        proxy_pass     http://localhost:8081;
        proxy_set_header  Host       $host;
        proxy_set_header  X-Real-IP    $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location ^~ /project2 {
        proxy_pass     http://localhost:8082;
        proxy_set_header  Host       $host;
        proxy_set_header  X-Real-IP    $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location / {
       proxy_pass     http://localhost:8080;
       proxy_set_header  Host       $host;
       proxy_set_header  X-Real-IP    $remote_addr;
       proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

這裡配置了三個專案:

  • http://example.com/project1路徑分發到http://localhost:8081
  • http://example.com/project2路徑分發到http://localhost:8082
  • 其他路徑分發到http://localhost:8080

2.啟用二級域名,不同的專案分配不同的二級域名

server {
    listen    80;
    server_name example.com;
    location / {
       proxy_pass     http://localhost:8080;
       proxy_set_header  Host       $host;
       proxy_set_header  X-Real-IP    $remote_addr;
       proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

project1

server {
    listen    80;
    server_name project1.example.com;
    location / {
       proxy_pass     http://localhost:8081;
       proxy_set_header  Host       $host;
       proxy_set_header  X-Real-IP    $remote_addr;
       proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

project2

server {
    listen    80;
    server_name project2.example.com;
    location / {
       proxy_pass     http://localhost:8082;
       proxy_set_header  Host       $host;
       proxy_set_header  X-Real-IP    $remote_addr;
       proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

注意:這三個專案屬於不同的域名,專案之間通過http訪問會存在跨域問題。