Nginx同一个域名配置多个项目

使用Nginx要在同一个域名下配置多个项目有两种方式:

  1. nginx按不同的目录分发给不同的项目

启用二级域名,不同的项目分配不同的二级域名

nginx按不同的目录分发给不同的项目

在nginx的server节点配置

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

配置在同一个域名下,如果是接口,不同的项目之间调用不存在跨域(CORS)问题。

启用二级域名,不同的项目分配不同的二级域名

配置二级域名,每一个项目配置一个server

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访问会存在跨域问题。

版权声明:著作权归作者所有。

相关推荐

nginx配置Basic认证

最近在搭建kibana时,发现kibana是没有提供认证功能,所以想到给它加一个认证,最简单的就是basic auth认证。下面记录下nginx配置basic认证的过程。添加Basic Auth认证需要先创建密码文件,这里使用htpasswd。如果没有找到htpasswd命令,可以先安装httpd-tools。安装httpd-toolsyum install 

nginx配置gzip压缩

配置在nginx.conf的http节点,添加gzip配置如下:http {   gzip on;   gzip_min_length 1k;   gzip_buffers 4 16k;   gzip_comp_level 2;   gzip_types text/plain text/c

使用Node.js实现一个简单的web服务器

这是使用Node.js写的一个简单Web服务器示例,分为三部分:响应http请求路由url读取静态文件响应新建一个app.js文件作为此web服务器的入口。响应http请求首先我们引入http模块,创建一个http服务器。const http = require('http'); const hostname = '127.0.0.1'

Nginx配置WebSocket

Nginx配置WebSocketserver {     listen       80;     server_name  example.com;     location&