![Apache 通过同一域名使网站可供内联网和互联网使用](https://linux22.com/image/775335/Apache%20%E9%80%9A%E8%BF%87%E5%90%8C%E4%B8%80%E5%9F%9F%E5%90%8D%E4%BD%BF%E7%BD%91%E7%AB%99%E5%8F%AF%E4%BE%9B%E5%86%85%E8%81%94%E7%BD%91%E5%92%8C%E4%BA%92%E8%81%94%E7%BD%91%E4%BD%BF%E7%94%A8.png)
这可能是一个愚蠢的问题,但我似乎找不到解决方案。
以下场景: https://sub.doma.in:443托管在我家的 Apache 服务器上。从外部连接时工作正常。从我的计算机上的同一网络连接时也工作正常。但是,我的手机无法从同一网络连接(ERR_CONNECTION_TIMED_OUT)。所以一定出了问题。
我想要:建立与 sub.doma.in 的任何连接,通过互联网访问我的托管网站。我认为目前就是这样,但它并不适用于所有设备。
或者(最好):从内联网连接到 sub.doma.in,直接连接到内部 IP,而无需先路由到外部。
无论从哪里连接,每个人都应该最终到达同一个站点。
防火墙允许任何地方的 80 和 443,路由器只开放 443 端口。如果您需要任何配置文件或日志,请告诉我。任何帮助都非常感谢!:)
我当前网站的虚拟主机如下所示:
<VirtualHost *:80>
ServerName sub.doma.in
Alias /.well-known/acme-challenge/ /usr/share/webapps/acme
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName sub.doma.in
SSLEngine on
SSLCertificateFile xxx
SSLCertificateKeyFile xxx
Include xxx
Protocols h2 http/1.1
Header always set Strict-Transport-Security "max-age=63072000"
CustomLog "xxx" common
DocumentRoot xxx
DirectoryIndex index.php index.html
<Directory xxx>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</Directory>
<IfModule mod_dav.c>
Dav off
</IfModule>
<FilesMatch \.php$>
SetHandler "proxy:unix:xxx|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
答案1
您是否在网络之外使用同一部手机访问该网站?错误是否只发生在这部手机上?以下是一些可能的原因:最简单的原因:可能是手机的缓存问题。最好的方法是谷歌搜索如何清除 DNS 缓存。
你肯定是通过https连接手机的吗?因为路由器没有开放80端口,所以http不行。
您的域名提供商是否正确配置了您的 DNS?最好使用 DNS 检查器进行测试(也可以直接在 Google 上搜索)
我能想到的另一个问题是,你的家庭网络中有一个广告拦截器,可能会阻止此页面。类似 Pi Hole 的东西……有些人现在已经有了,类似的东西可能会导致问题。我希望我能帮上忙。
答案2
事实证明,这与服务器当前连接的 WiFi 有关。如果它在 2.4GHz 网络上,则 2.4GHz 网络上的其他设备无法连接,但 LAN 和 5GHz 可以工作。反之亦然。所以我猜这是路由器的问题。我最终设置了 dnsmasq 并将网站的 IP 设置为本地内部地址。现在它正常工作了。