我有...
<VirtualHost example.com:80>
ServerAdmin webmaster@localhost
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
立即转到...
<IfModule mod_ssl.c>
<VirtualHost example.com:443>
ServerAdmin webmaster@localhost
ServerName example.com
ServerAlias example.com
DocumentRoot /home/klyde/ror/exampledev/public
SSLCertificateFile /etc/apache2/ssl/certs/123abc.crt
SSLCertificateChainFile /etc/apache2/ssl/certs/gd_bundle-g2-g1.crt
SSLCertificateKeyFile /etc/apache2/ssl/private/examplekey.key
BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLEngine on
SSLProxyEngine On
ProxyRequests On
<Proxy *>
AddDefaultCharset off
#Options Indexes FollowSymLinks
AllowOverride none
<RequireAny>
#<RequireAll>
# Require all granted
#</RequireAll>
<RequireAll>
Require host example.com
</RequireAll>
<RequireAll>
Require local
# Require ip 127.0.0.1
</RequireAll>
</RequireAny>
</Proxy>
ProxyPassReverseCookiePath / /
ProxyPass /errors/ !
ProxyPass /websockets ws://127.0.0.1:8675/
ProxyPassReverse /websockets ws://127.0.0.1:8675/
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
</VirtualHost>
</IfModule>
当我启用...
Require all granted
一切正常。但该网站充斥着网络钓鱼。我想...
Require host example.com
但这会导致日志错误......
access check of 'example.com' to / failed, reason: unable to get the remote host name
我之所以选择此配置,是因为我想停止 Apache 中的 SSL 和 Torquebox 的 ajp。除了尝试保护站点之外,此配置工作正常。当然,Apache 与 Torquebox 可能并不完全理想、可取,等等。欢迎提出相反的建议。
主要问题 - 为什么会出现“远程主机名”错误。有什么想法吗?
答案1
仅当远程 IP 地址有PTR
记录时,通过名称确定远程主机才有效,并非所有 IP 地址都有记录。如果可以,请在语句中使用 IP 地址Require
。
您还可以使用基本身份验证(最好通过 https)来限制访问。
proxy
如果您想要的只是proxypass
功能, 那么您不需要定义。
如果您需要代理,请尝试将代理限制在您的域内。
<Proxy http://www.example.com/*>
....
</Proxy>
答案2
我认为你可以使用
Require ip 127.0.0.1
使用你服务器的 IP 而不是本地 IP
答案3
如果您只是想打开并允许来自任何 IP 的请求,您可以使用:
Require all granted
您可以在这里查看更多信息:https://serverfault.com/a/887196/468080