我在 Google 上搜索了好几天,但还是无法让它工作。使用 apache 重写:domain.com > test.com/test(但在浏览器中保留 URL domain.com)
整个 SSL 配置:
<VirtualHost *:443>
ServerName xxx
ServerAlias domain.com test.com
DocumentRoot /srv/www/test/htdocs
LogLevel warn
ErrorLog "/srv/www/test/logs/apache2-error-ssl.log"
CustomLog "/srv/www/test/logs/apache2-access-ssl.log" combined
<Directory /srv/www/test/htdocs>
Options -Indexes +ExecCGI +FollowSymLinks -MultiViews
AllowOverride AuthConfig FileInfo Indexes Limit Options=Indexes,MultiViews
Require all granted
</Directory>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond "%{HTTP_HOST}" "^(www\.)?domain\.com$" [NC]
RewriteRule ".*" "https://test.com/test" [L,NE,P]
</IfModule>
SSLEngine on
SSLProxyEngine on
<FilesMatch "\.php$">
SSLOptions +StdEnvVars
</FilesMatch>
<IfModule mod_fcgid.c>
SuexecUserGroup test test
Alias /cgi-bin/ /srv/www/.fcgid/test/
</IfModule>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/xxx
SSLCertificateKeyFile /etc/letsencrypt/live/xxx
</VirtualHost>
mod_proxy(proxy 和 proxy_http)已激活,一切正常,重定向/重写也是如此,但它不会保留 URL。如果有人知道线索,我将不胜感激。apache 日志中没有任何内容。我错过了什么吗?
答案1
尝试反向代理
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_html
sudo a2enmod rewrite
sudo a2enmod deflate
在 apache 配置中添加以下几行
ServerName your-reverse-proxy-domain.com
ProxyPass / http://backend-server-url/
ProxyPassReverse / http://backend-server-url/
然后重新启动 apache 服务
答案2
您是否在 apache 中启用了重写模块?
运行给定的命令来启用重写模块。
“sudo a2enmod 重写”
答案3
按照这个做,它肯定会解决你的问题。
安装 nginx
sudo apt install nginx
在与 apache 相同的文档根目录下使用不同的端口(如 8080)运行它。
在 apache 配置中添加以下行。
ServerName domain.com
ProxyPass / http://test.com:8080/test/
ProxyPassReverse / http://test.com:8080/test/
重新启动 apache 服务