Joa*_*o M 3 apache mod-proxy webmin
我在 VPS 上有一个有效的 webmin 设置,但是在尝试强制它通过 HTTPS 连接后,我在某个地方做了一些错误,现在每当我尝试登录时,登录页面都无法正确显示(没有蓝色矩形背景)和尝试通过登录https://server1.domain.me:10000不断将我重定向到https://server1.domain.me:10000/webmin/session_login.cgi,这又是一个登录页面。
在它开始出现故障之前,我有以下文件 /etc/apache2/sites-available
<VirtualHost *:80>
ServerAdmin webmaster@domain.me
ServerName domain.me
ServerAlias www.domain.me
DocumentRoot /var/www/domain.me/
<Directory />
RedirectMatch temp ^/$ /public_html
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/domain.me>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
<Directory /var/www/domain.me/redmine>
AllowOverride None
order allow,deny
allow from all
RailsBaseURI /redmine
PassengerResolveSymlinksInDocumentRoot on
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerSignature On
RailsEnv production
RailsBaseURI /redmine
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
当我试图力Webmin的(和owncloud如果该事项)使用HTTPS我创建了一个新的虚拟主机端口443利用我的SSL密钥和更新虚拟主机的端口80来代理所有http://domain.me/webmin到https://server1.domain.me:10000(我一直注释掉CONFIGS给你看什么我试过了):
<VirtualHost *:443>
ServerAdmin webmaster@domain.me
ServerName server1.domain.me
alias /owncloud /var/www/domain.me/owncloud
DocumentRoot /var/www/domain.me/
SSLEngine On
SSLProxyEngine On
SSLCertificateFile /etc/ssl/ssl.crt/server1_domain_me.crt
SSLCertificateKeyFile /etc/ssl/ssl.crt/server1.key
SSLCACertificateFile /etc/ssl/ssl.crt/COMODORSADomainValidationSecureServerCA.crt
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# <Location /webmin>
# RewriteEngine On
# #RewriteRule (.*) https://server1.domain.me:10000/$1 [R,L]
# ProxyPass https://server1.domain.me:10000/
# ProxyPassReverse https://server1.domain.me:10000/
# </Location>
<Directory /var/www/domain.me/owncloud>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
Satisfy Any
<IfModule mod_rewrite.c>
RewriteEngine on
<IfModule mod_ssl.c>
RewriteEngine On
RewriteRule ^/?(.*)$ https://%{HTTP_HOST}/owncloud$
</IfModule>
</IfModule>
</Directory>
# ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
# <Directory "/usr/lib/cgi-bin">
# AllowOverride None
# Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
# Order allow,deny
# Allow from all
# </Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerSignature On
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
并将我的 domain.me 虚拟主机文件更新为:
<VirtualHost *:80>
ServerAdmin webmaster@domain.me
ServerName domain.me
ServerAlias www.domain.me
#SSLEngine On
SSLProxyEngine On
SSLProxyCheckPeerCN off
SSLProxyCheckPeerExpire off
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
DocumentRoot /var/www/domain.me/
<Directory />
RedirectMatch temp ^/$ /public_html
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/domain.me>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
<Directory /var/www/domain.me/redmine>
AllowOverride None
order allow,deny
allow from all
RailsBaseURI /redmine
PassengerResolveSymlinksInDocumentRoot on
</Directory>
<Location /owncloud>
ProxyPass https://server1.domain.me/owncloud/
</Location>
<Location /server1>
ProxyPass https://server1.domain.me/webmin/
</Location>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerSignature On
RailsEnv production
RailsBaseURI /redmine
#ProxyPassReverse /owncloud https://server1.domain.me/owncloud/
#ProxyPassReverse /webmin https://server1.domain.me:10000/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我还添加了行webprefix=/webmin,webprefixnoredir=1并添加referer=domain.me到/etc/webmin/config
但是,这里显然有问题,因为我根本无法登录 webmin。在过去的 5 个小时里,我一直在网上搜索答案,尝试了很多东西,但仍然没有运气。
有任何想法吗?
有 4 个关键的(和未记录的!)键可以让这个工作,正如我发现的那样!
1) 编辑时/etc/webmin/config,请确保webprefix=/webmin行尾没有空格。这将解决登录屏幕格式古怪的问题。
2) 在 ProxyPass 中使用斜杠时需要非常精确(并且它们与官方文档不匹配!)
ProxyPass /webmin/ http://localhost:10000/
ProxyPassReverse /webmin/ http://localhost:10000/
Run Code Online (Sandbox Code Playgroud)
3) 您需要包含 cookie ProxyPass 行(同样不在文档中!)。
ProxyPassReverseCookieDomain /webmin/ http://localhost:10000/
ProxyPassReverseCookiePath /webmin/ http://localhost:10000/
Run Code Online (Sandbox Code Playgroud)
4) 当您浏览到 Webmin 时,您必须包含一个尾部斜杠!
http://your.domain.name/webmin/
Run Code Online (Sandbox Code Playgroud)
* 更新 *
关于第 4 点:
为确保浏览 Webmin 时始终存在尾部斜杠,请添加这些行(在代理传递之前,如果重要?)。添加后,如果您忘记添加斜杠,Apache 将简单地为您完成:
RewriteEngine On
RewriteRule ^/webmin$ /webmin/ [R]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3638 次 |
| 最近记录: |