nginx iis占用80端口
当在一台服务器上同时需要使用Nginx和IIS时,可能会遇到80端口被其中一个服务占用的问题。下面提供几种解决方案来解决这个问题。
一、调整监听端口
(一)Nginx调整
最简单的办法是让其中一个软件不在80端口监听。对于Nginx来说,可以修改其配置文件(一般位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf),将监听端口改为其他未被占用的端口,例如8080。修改如下:
```bash
server {
listen 8080; # 原本为listen 80;
servername yourdomain.com;
location / {
root html;
index index.html index.htm;
}
}
``
sudo systemctl restart nginx`(如果是Linux系统,Windows下根据安装方式不同有不同的启动命令)。
然后重启Nginx服务:
(二)IIS调整
如果选择让IIS不监听80端口,在IIS管理器中,找到对应的网站,点击“绑定”,将端口修改为其他端口如8081等,最后点击确定并重新启动IIS服务(iisreset)。
二、反向代理
(一)Nginx作为IIS的反向代理
假设IIS已经占用了80端口并且有正常运行的站点。可以在Nginx中设置反向代理,使请求先到达Nginx再转发给IIS。Nginx配置如下:
```bash
server {
listen 80;
servername yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8081; # IIS实际监听的端口
proxy_set_header Host $host;
proxy_set_header X - Real - IP $remote_addr;
proxy_set_header X - Forwarded - For $proxy_add_x_forwarded_for;
proxy_set_header X - Forwarded - Proto $scheme;
}
}
```
这样,外部访问your_domain.com时,Nginx会把请求转发给IIS处理,而用户无感知地获取到IIS上的内容。
三、通过防火墙规则控制
还可以借助防火墙来实现端口转发。以Linux下的iptables为例,将发往80端口的数据转发给8080端口(假设Nginx监听8080端口)。
bash
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to -ports 8080
不过这种方式相对较为底层,不如前两种方法直观且容易维护,而且需要确保防火墙相关服务正常工作。
以上就是在同一台服务器上解决Nginx和IIS共存于80端口问题的方法,可以根据实际需求和环境特点选择合适的方式。