我在让 proxypass 在 apache 中工作时遇到了麻烦。
我的配置文件如下:
<VirtualHost 1.2.3.4:443>
ServerName example.com
ServerAlias www.example.org
ServerAdmin [email protected]
DocumentRoot /home/admin/web/knyz.org/public_html
ScriptAlias /cgi-bin/ /home/admin/web/knyz.org/cgi-bin/
Alias /vstats/ /home/admin/web/knyz.org/stats/
Alias /error/ /home/admin/web/knyz.org/document_errors/
#SuexecUserGroup admin admin
CustomLog /var/log/apache2/domains/knyz.org.bytes bytes
CustomLog /var/log/apache2/domains/knyz.org.log combined
ErrorLog /var/log/apache2/domains/knyz.org.error.log
<Directory /home/admin/web/knyz.org/public_html>
AllowOverride All
SSLRequireSSL
Options +Includes -Indexes +ExecCGI
</Directory>
<Directory /home/admin/web/knyz.org/stats>
AllowOverride All
</Directory>
SSLEngine on
SSLVerifyClient none
SSLCertificateFile /home/admin/conf/web/ssl.knyz.org.crt
SSLCertificateKeyFile /home/admin/conf/web/ssl.knyz.org.key
SSLCertificateChainFile /home/admin/conf/web/ssl.knyz.org.ca
<IfModule mod_ruid2.c>
RMode config
RUidGid admin admin
RGroups www-data
</IfModule>
<IfModule itk.c>
AssignUserID admin admin
</IfModule>
IncludeOptional /home/admin/conf/web/sapache2.knyz.org.conf*
##ISSUE IS HERE!!!
<Location /admin>
ProxyPass https://localhost:8083
ProxyPassReverse https://localhost:8083
</Location>
</VirtualHost>
期望结果:访问子目录时将显示来自端口 8083 的本地主机的页面/admin
。
实际结果:错误 500
该问题似乎与此处相同:带有 SSL 的 Apache ProxyPass
但该解决方案对我来说不起作用。
当我尝试这样做时,重新启动 apache 时出现以下错误:
SSLProxyEngine not allowed here
来自错误日志(关于错误 500):
[Sun Dec 13 21:33:31.062959 2015] [ssl:error] [pid 1181] [remote 127.0.0.1:8083] AH01961: SSL Proxy requested for example.org:443 but not enabled [Hint: SSLProxyEngine]
[Sun Dec 13 21:33:31.063033 2015] [proxy:error] [pid 1181] AH00961: HTTPS: failed to enable ssl support for 127.0.0.1:8083 (localhost)
我该如何修复此问题?
更新
我用以下内容替换了位置块
ProxyPreserveHost On
ProxyPass /blog http://127.0.0.1:2368/blog
ProxyPassReverse /blog http://127.0.0.1:2368/blog
ProxyPass /admin https://127.0.0.1:8083
ProxyPassReverse /admin https://127.0.0.1:8083
现在/blog
正常工作,但现在/admin
却不行。这意味着问题肯定出在 SSL 上。
答案1
据我所知,ProxyPass 不适用于块内 - 您可以在<Location>
块中使用。它需要在该块之外,并且您SSLProxyEngine
还需要将其打开:
SSLProxyEngine On
ProxyPass /admin https://localhost:8083/
ProxyPassReverse /admin https://localhost:8083/