使用Nginx如何部署两个不同的项目

在 linux 中实现一个 nginx 部署2个不同的端口号访问不同的项目

nginx目录简介

1、安装好后的目录结构
在这里插入图片描述

2、conf文件目录结构
在这里插入图片描述
我们打开nginx.conf文件,找到配置两个项目端口的地方:

 server {
            listen       8081;
            server_name  10.174.0.22;

            location / {
                root   html;--此处是需要创建的文件,端口是8081的文件,后续打包的项目也要放到这个文件里(复制时将此注释删掉)
                index  index.html index.htm;
            }

            location /prod-api/ {
                proxy_pass  http://10.174.0.22:8089;--后端连接的服务器和端口(赋值时将本注释删掉)
                proxy_set_header  Host $http_host;
                proxy_set_header  X-real-ip $remote_addr;
                proxy_set_header  REMOTE-HOST $remote_addr;
                proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
            }
         }

    server {
        listen       8080;
        server_name  10.174.0.22;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   mos_html;--此处是需要创建的文件,此文件是8080端口的文件,后续打包的项目也要放到这个文件里(复制时将此注释删掉)
            index  index.html index.htm;
        }

        location ^~/api/ {
            rewrite ^/api/(.*)$/$1 break;
            proxy_pass  http://10.174.0.22:8088;
            proxy_set_header  Host $http_host;
            proxy_set_header  X-real-ip $remote_addr;
            proxy_set_header  REMOTE-HOST $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }

想必细心的小伙伴可以观察到这两处不一样,
第一个图是我后端使用axios跨域时没有/api前缀
在这里插入图片描述

对应的第二个图就是我厚度按请求的携带/api
在这里插入图片描述
例如后端代码:
在这里插入图片描述

效果

最后重启 nginx,然后访问链接就可以咯

### 如何在 Nginx部署并运行两个不同项目 为了实现 Nginx 同时支持两个不同项目部署,可以通过基于域名或路径的方式分别配置虚拟主机(server blocks)。以下是详细的说明: #### 虚拟主机的概念 Nginx 支持通过 `server` 块定义多个虚拟主机。每个虚拟主机可以根据特定条件(如域名、IP 地址或端口号)来处理请求[^1]。 --- #### 方法一:基于域名区分项目 如果两个项目不同的域名(例如 project1.example.com 和 project2.example.com),可以在 `/etc/nginx/conf.d/` 或 `/etc/nginx/sites-available/` 中分别为它们创建独立的配置文件。 ##### 创建第一个项目的配置文件 假设第一个项目位于 `/var/www/project1` 目录下,其域名是 `project1.example.com`: ```nginx server { listen 80; server_name project1.example.com; root /var/www/project1; index index.html; location / { try_files $uri /index.html; } } ``` ##### 创建第二个项目的配置文件 假设第二个项目位于 `/var/www/project2` 目录下,其域名是 `project2.example.com`: ```nginx server { listen 80; server_name project2.example.com; root /var/www/project2; index index.html; location / { try_files $uri /index.html; } } ``` ##### 启用配置文件 将上述配置文件保存到 `/etc/nginx/sites-available/` 下,并为其创建符号链接至 `/etc/nginx/sites-enabled/`[^2]: ```bash sudo ln -s /etc/nginx/sites-available/project1.conf /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/project2.conf /etc/nginx/sites-enabled/ ``` 测试配置文件语法是否正确: ```bash sudo nginx -t ``` 如果没有错误,则重新加载 Nginx 配置: ```bash sudo systemctl reload nginx ``` --- #### 方法二:基于路径区分项目 如果希望在同一域名下通过路径访问不同项目(例如 example.com/project1 和 example.com/project2),可以使用单一的 `server` 块并通过 `location` 来区分。 ##### 单一服务器块配置示例 ```nginx server { listen 80; server_name example.com; # 第一个项目的路径映射 location /project1/ { alias /var/www/project1/; index index.html; try_files $uri /project1/index.html; } # 第二个项目的路径映射 location /project2/ { alias /var/www/project2/; index index.html; try_files $uri /project2/index.html; } } ``` 在此配置中,`alias` 指定了实际目录的位置,而 `try_files` 则用于确保静态资源能够被正确解析。 同样需要验证配置文件的有效性并重新加载服务: ```bash sudo nginx -t && sudo systemctl reload nginx ``` --- #### 注意事项 - 如果项目依赖动态内容(如 PHP 应用程序),则需进一步配置反向代理或 FastCGI 处理逻辑。 - 对于 HTTPS 请求,应为每个域名生成 SSL/TLS 证书,并将其绑定到对应的 `server` 块中。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值