单网卡双IP的Windows Server 2022中外网80/443流量无法正确指向IIS的问题解决请求
各位大佬好,我遇到了一个服务器配置的棘手问题,想请教下怎么解决:
我的Windows Server 2022服务器只有一块网卡,但配置了两个IP地址:
- 192.168.1.8:分配给Apache服务使用
- 192.168.1.9:分配给IIS服务使用
在局域网内部访问两个服务都完全正常,但从外网访问时就出问题了——不管我输入的是HTTP还是HTTPS,最终都会被跳转到Apache对应的网站(我猜测可能是因为1.8是网卡的第一个IP?)。而且从Apache的虚拟主机配置也能看到,80端口有301重定向到HTTPS,所以最终浏览器都会显示HTTPS的Apache站点,完全无法访问到IIS的服务。
我现在的核心需求是:让外网所有80和443端口的流量都直接指向IIS所在的192.168.1.9,请问该怎么配置?
我已经尝试过的方法:
- 在Windows防火墙里创建了入站规则,选择了
w3wp.exe,然后在作用域里设置了外部IP作为远程IP地址,但这个方法完全没用。
另外我想问问,是不是需要在DNS管理器里做什么额外配置?如果需要的话,我可以提供DNS管理工具里的树形结构截图。
更新补充信息:
后来我检查了路由器的NAT端口转发配置,发现已经设置了正确的规则,把外网80/443端口的流量转发到IIS所在的192.168.1.9,具体规则如下:
| 规则名称 | 外部端口 | 内部端口 | 协议 | 内部IP |
|---|---|---|---|---|
| SERVER | 80 | 80 | TCP | 192.168.1.9 |
| SERVER | 443 | 443 | TCP | 192.168.1.9 |
同时我确认了两个服务的监听配置:
- IIS站点确实在监听192.168.1.9的80和443端口
- Apache的监听和虚拟主机配置如下:
- http.conf中的监听设置:
Listen 192.168.1.8:80 - http-ssl.conf中的监听设置:
Listen 192.168.1.8:443 - http-vhost.conf的虚拟主机配置:
<VirtualHost 192.168.1.8:80> ServerName website.com ServerAlias website.com Redirect 301 / https://website.com/ </VirtualHost> <VirtualHost 192.168.1.8:443> ServerName website.com ServerAlias website.com # Index file and Document Root (where the public files are located) DirectoryIndex index.html index.php DocumentRoot "C:/Apache24/htdocs/website/public" # Log file locations LogLevel warn ErrorLog "logs/website-error.log" CustomLog "logs/website-access.log" common SSLEngine on SSLCertificateFile C:\\Apache24\\certificates\\website.com.crt SSLCertificateKeyFile C:\\Apache24\\certificates\\website.com.key <Directory C:/Apache24/htdocs/website/public> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> # Cache for static resources (Enable expiration and set it to A2592000 = 1 month) ExpiresActive On ExpiresByType image/x-icon A2592000 ExpiresByType image/gif A2592000 ExpiresByType image/png A2592000 ExpiresByType image/jpeg A2592000 ExpiresByType text/css A2592000 ExpiresByType text/javascript A2592000 ExpiresByType application/x-javascript A2592000 ExpiresByType application/javascript A2592000 # Compress returned resources of type php pages, text file export, css and javascript AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript Protocols h2 http/1.1 </VirtualHost>
- http.conf中的监听设置:
最后,域名解析是正常的,ping测试结果如下:
Haciendo ping a myname.myqnapcloud.com [1.2.3.4] con 32 bytes de datos:
Respuesta desde 1.2.3.4: bytes=32 tiempo<1m TTL=64
Respuesta desde 1.2.3.4: bytes=32 tiempo<1m TTL=64
Respuesta desde 1.2.3.4: bytes=32 tiempo<1m TTL=64
Respuesta desde 1.2.3.4: bytes=32 tiempo<1m TTL=64
Estadísticas de ping para 1.2.3.4:
Paquetes: enviados = 4, recibidos = 4, perdidos = 0
(0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
Mínimo = 0ms, Máximo = 0ms, Media = 0ms
备注:内容来源于stack exchange,提问作者Daviid




