You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Nginx与Apache共用80端口实现多项目访问?

当然可以实现!两种方向的配置都可行,我来分别给你详细说明:

方案一:Apache作为前端(80端口),转发/nginx1、/nginx2请求到Nginx(8000端口)

这种方案不需要改动现有Apache的80端口配置,只需要给Apache添加反向代理规则,把指定路径的请求转发到Nginx的8000端口即可。

步骤1:启用Apache的代理模块

首先要确保Apache的mod_proxy和mod_proxy_http模块已经启用,在终端执行:

a2enmod proxy proxy_http

执行完成后重启Apache生效:

systemctl restart apache2 # 或者根据你的系统用 service apache2 restart

步骤2:修改Apache虚拟主机配置

找到你的Apache虚拟主机配置文件(通常在/etc/apache2/sites-available/myserver.conf这类路径),添加以下规则:

<VirtualHost *:80>
    ServerName myserver.com

    # 保留原有Apache项目的配置
    Alias /apache1 /path/to/your/apache1/project
    <Directory /path/to/your/apache1/project>
        AllowOverride All
        Require all granted
    </Directory>

    Alias /apache2 /path/to/your/apache2/project
    <Directory /path/to/your/apache2/project>
        AllowOverride All
        Require all granted
    </Directory>

    # 添加反向代理规则,转发Nginx项目请求
    ProxyPass /nginx1 http://localhost:8000/nginx1
    ProxyPassReverse /nginx1 http://localhost:8000/nginx1

    ProxyPass /nginx2 http://localhost:8000/nginx2
    ProxyPassReverse /nginx2 http://localhost:8000/nginx2
</VirtualHost>
  • ProxyPass:将/nginx1路径的请求转发到Nginx的对应路径
  • ProxyPassReverse:修改响应头中的地址,避免客户端收到localhost:8000的地址,保证跳转和资源路径正确

步骤3:重启Apache

配置修改后重启Apache,让规则生效:

systemctl restart apache2
方案二:Nginx作为前端(80端口),转发/apache1、/apache2请求到Apache

如果更倾向让Nginx作为统一的流量入口(80端口),可以把Apache的监听端口改成8080,然后让Nginx转发对应路径到Apache。

步骤1:修改Apache的监听端口

找到Apache的主配置文件(比如/etc/apache2/httpd.conf或/etc/apache2/ports.conf),把Listen 80改成:

Listen 8080

重启Apache生效:

systemctl restart apache2

步骤2:修改Nginx配置

找到Nginx的站点配置文件(比如/etc/nginx/sites-available/myserver.conf),添加以下规则:

server {
    listen 80;
    server_name myserver.com;

    # 保留原有Nginx项目的配置
    location /nginx1 {
        root /path/to/your/nginx1/project;
        index index.html index.php; # 根据你的项目类型调整索引文件
    }

    location /nginx2 {
        root /path/to/your/nginx2/project;
        index index.html index.php;
    }

    # 添加反向代理规则,转发Apache项目请求
    location /apache1 {
        proxy_pass http://localhost:8080/apache1;
        # 设置必要的请求头,保证Apache能正确识别请求来源
        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 /apache2 {
        proxy_pass http://localhost:8080/apache2;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

步骤3:验证Nginx配置并重启

先验证配置是否正确:

nginx -t

如果提示test is successful,就重启Nginx:

systemctl restart nginx
总结

两种方案都能实现你的需求:

  • 方案一适合不想改动现有Apache端口的场景,直接在Apache上添加代理规则即可
  • 方案二更适合希望用Nginx作为统一流量入口的场景,需要调整Apache的监听端口

测试的时候直接访问myserver.com/apache1、myserver.com/apache2、myserver.com/nginx1、myserver.com/nginx2就能分别对应到各自的项目了。

内容的提问来源于stack exchange,提问作者JMY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:03:52