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

Apache ProxyPass配置问题:限制端口仅对应指定域名访问

Apache ProxyPass配置问题:限制端口仅对应指定域名访问

看起来你的问题核心在于两个React应用默认监听了服务器的所有网络接口(0.0.0.0),导致外部可以直接通过域名+端口的方式绕开Apache代理访问应用;再加上当前的Apache配置只做了反向转发,没有限制端口的直接访问权限,才出现了跨域名访问对应端口的情况。

下面给你两种解决思路,优先推荐第一种:

方法一:让应用仅监听localhost(最可靠)

这是从根源解决问题的方式,让你的React应用只在服务器本地的3939/3940端口运行,外部无法直接通过端口访问,必须走Apache的反向代理。

  • 如果你用的是Create React App:
    修改package.json里的启动命令,加上--host localhost参数:

    "scripts": {
      "start": "react-scripts start --host localhost"
    }
    
  • 如果你用的是Vite:
    在vite.config.js里配置服务器仅监听localhost:

    export default defineConfig({
      server: {
        host: 'localhost'
      }
    })
    

修改后重启应用,此时外部用户只能通过https://test.example.com访问3939端口的应用,https://test2.example.com访问3940端口的应用,直接用域名+端口的方式会无法连接。

方法二:通过Apache限制端口访问(备选方案)

如果因为某些原因无法修改应用的监听地址,可以通过Apache配置直接阻止外部访问3939/3940端口:

  1. 先在Apache的主配置文件里添加监听指令:
Listen 3939
Listen 3940
  1. 然后添加两个VirtualHost块,拒绝所有直接访问这两个端口的请求:
<VirtualHost *:3939>
  <Location />
    Deny from all
    ErrorDocument 403 "该端口仅支持通过指定域名访问"
  </Location>
</VirtualHost>

<VirtualHost *:3940>
  <Location />
    Deny from all
    ErrorDocument 403 "该端口仅支持通过指定域名访问"
  </Location>
</VirtualHost>

同时确保你原有的两个HTTPS VirtualHost配置正确(注意替换掉[SSL]为实际的证书路径):

<IfModule mod_ssl.c>
<VirtualHost *:443>
  ServerName test.example.com

  SSLCertificateFile /path/to/your/test-cert.pem
  SSLCertificateKeyFile /path/to/your/test-private.key

  ProxyPass / http://localhost:3939/
  ProxyPassReverse / http://localhost:3939/
  ProxyPreserveHost On
</VirtualHost>

<VirtualHost *:443>
  ServerName test2.example.com

  SSLCertificateFile /path/to/your/test2-cert.pem
  SSLCertificateKeyFile /path/to/your/test2-private.key

  ProxyPass / http://localhost:3940/
  ProxyPassReverse / http://localhost:3940/
  ProxyPreserveHost On
</VirtualHost>
</IfModule>

最后别忘了重启Apache服务,让配置生效。

备注:内容来源于stack exchange,提问作者dcr31000

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 10:09:49