我在同一台服务器上部署了 3 个不同的应用程序。每个应用程序位于不同的端口上
- 一个在端口 8080 上运行的 Java API 应用程序。目录(/主页/api/)
- 在端口 3000 上运行的第二个 nextjs Web 应用程序。目录(/主页/网站)
- 第三个 vuejs 管理面板应用程序在默认端口 80 上部署在子目录中(/var/www/html/管理员)
这是一个 apache 配置文件 test.conf
ServerName www.test.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# Setup reverse proxy for all server
ProxyPreserveHost On
ProxyPass /admin http://localhost/admin
ProxyPassReverse /admin http://localhost/admin
ProxyPass /api http://localhost:8080/api
ProxyPassReverse /api http://localhost/api
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost/
API 工作正常http://test.com/api网址。
该网站也运行良好http://test.com网址。
当我访问时出现问题http://test.com/admin网址。
浏览器中显示以下错误:-
Your browser sent a request that this server could not understand. The size of a request header field exceeds the server limit.
状态代码为 400 错误请求,如果我删除行政从反向代理面板创建另一个具有简单配置的 vhost 文件,如下所示:-
这是另一个 apache vhost 配置文件测试管理员配置文件
ServerName www.test.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/html/admin>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
Order allow,deny
Allow from all
</Directory>
然后其他 URL 停止工作,显示404 未找到错误。
笔记:-测试网只是代表实际的域名或IP。