前言
我是windows下配置Nginx监听80端口做代理转发至IIS,遇到的此问题。
思路
思路就是windows服务器装Nginx,监听80或者443端口,网络请求请求到目标服务器后,先走Nginx,转发到localhost:10200,nginx做代理和反向代理。
目的
为什么要这么做呢?IIS站点绑证书不是很好吗?也能实现正常网络请求和响应,加个nginx不是多此一举吗?nginx实现了代理转发,我认为最好的一点就是一个域名可以绑多个站点,以前IIS一个证书绑一个站点,想加站点只能做子站点,nginx解决了此问题,轻松实现独立站点,一个域名,转发到不同端口就可以了。另外nginx还可以做负载均衡(Load Balance),打比方一个域名绑定到负载服务器,分发网络请求到两台Web服务器。
解决端口占用问题
System 4号进程占用80端口,除了IIS服务外,还有SQLServer服务也会监听80端口,把IIS和SQLServer的服务都停掉就解决了。
以下是CMD下常用命令:
1. 查看哪一个程序占用了80端口:
netstat -ano "80"
2. 查看一下当前的http服务状态:
netsh http show servicestate
可以看到PID进程号为3828,队列名称为WeChat的东西,正是我发布的IIS站点名。
如果80端口被占用可以通过此定位到是什么服务,比如下图:
上图是SQLServer的报告服务,可以去任务管理器>进程/服务里面定位到它,如图:
services.msc中可以把它设置成手动启动,免得重启都要重新停服务。我有这个主要是我本机安装了SQL Server。如图:
3. 查看80端口占用情况:
netstat -ano | findstr 0.0.0.0:80
如图:
停掉IIS
IIS也会占用80端口,停掉他。
注意还有两个IIS的服务也一并停掉,如图:
基本做了这些80端口就能监听上了,如果有其他程序占用就来一套,查进程,PID,停服务,
Nginx监听80端口
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://127.0.0.1:10200;
}
#location / {
# root html;
# index index.html index.htm;
#}
#location /WeChat/Index {
# proxy_pass http://127.0.0.1:10200;
#}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
CMD下检验一下nginx.conf是否有有问题:
C:\wwwroot\nginx-1.21.1>nginx -t
nginx: the configuration file C:\wwwroot\nginx-1.21.1/conf/nginx.conf syntax is ok
nginx: configuration file C:\wwwroot\nginx-1.21.1/conf/nginx.conf test is successful
C:\wwwroot\nginx-1.21.1>
没毛病,reload一下,nginx.conf配置生效
C:\wwwroot\nginx-1.21.1>nginx -s reload
C:\wwwroot\nginx-1.21.1>
借鉴的原文地址:https://www.cnblogs.com/firstdream/p/8057646.html
这老哥和我遇到同样问题,都是除了IIS以外还有SQL Server Report占用80问题。网上还有说改注册表http 3改0也试了没解决。感谢这位老哥分享。
仅供学习参考,如有侵权联系我删除。