惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
G
Google Developers Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
博客园 - Franky
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
月光博客
月光博客
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
小众软件
小众软件
Microsoft Security Blog
Microsoft Security Blog
Last Week in AI
Last Week in AI
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
爱范儿
爱范儿
J
Java Code Geeks
博客园 - 叶小钗
Engineering at Meta
Engineering at Meta
阮一峰的网络日志
阮一峰的网络日志

博客园 - 牛腩

鸿蒙开发DevEco Studio创建hello world项目 SQL Server数据库中用存储过程来取顺序号 cmd命令行下用命令执行SQL脚本到SQL Server数据库中 Blazor项目中建立WebApi NETCORE下用SKIT类库发送微信模板消息 ASP.NET CORE微信支付回调示例代码 nuget离线安装 高德地图API使用(根据地址查经纬度,计算二个坐标之间的距离) ModernWMS - 仓库管理系统简记 .NET开源商城CoreShop简记 uniapp中防抖函数debounce的使用 winform中的picturebox控件显示和保存byte[]图片 ASP.NET CORE kindeditor在线编辑器示例(上传多图和插入VIDEO标签) uni app uview新增商品页(无限级分类选择和多图上传) C#获取HTML源码 Ant for Blazor做单个表的增删查改 ASP.NET MVC中使用Autofac依赖注入 NET8下生成二维码 NET 7 中使用Session
windows服务器上用nginx转发到iis中的网站
牛腩 · 2024-06-23 · via 博客园 - 牛腩

windows服务器上用nginx转发到iis中的网站

2024年6月23日 测试通过

前提:华为云1核心2G内存1M带宽 服务器 ¥40/年,还没有备案,80端口用不了,在安全组里把81端口打开了,同时记得登录云服务器里把WINDOWS的防火墙关闭或者放行81端口

想法:windows服务器里下载nginx windows版本,然后所有请求都通过nginx转发到IIS里部署的网站上,IIS上部署的网站不绑定80端口,每个IIS网站都绑定一个如8001,8002,8003 这样的端口一直下去。。。

看了一下以前的小目标,其实这个想法之前就已经自己测试实现过了,看记录是23年9月的时候就测试过了,不过那时没有做到记录,今天测试好了特此记录一下!!!

nginx版本:1.25.2

iis里部署netcore网站:绑定里的主机名是localhost,端口是8003

nginx里的server写法:

 server{
     listen    81;
        server_name tool.niunan.net; 

        location / { 
        proxy_redirect http://localhost:8003/ /;
        proxy_set_header Host localhost; #记得iis里的绑定的主机名也要是localhost
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8003/; 
             }
 }

server_name是访问的域名,因为没有备案无法用80端口,访问只能是 http://tool.niunan.net:81来访问,如果没有server_name的话就可以直接用http://ip:81来访问了

然后命令行下:

//检测nginx配置文件是否有错误
nginx -t
//没有错误就可以运行了
nginx.exe
//修改配置文件后热重载nginx
nginx -s reload
//停止nginx
nginx -s stop
//如果错误信息里提示端口被占用什么的,可以先停掉w3c服务,启动得nginx了再开启w3c服务
net stop w3svc
net start w3svc
//cmd下查找端口占用情况
netstat -ano|findstr 80
//上面的命令查找出来最后一列是进程ID,再通过下面的CMD命令查找对应哪个程序
tasklist |findstr 25728

弄好后不出意外就可以在外网输入http://tool.niunan.net:81来访问部署在iis上的netcore网站了,nginx会转发到http://localhost:8003上,而且客户端IP也会一同提交过去

自己弄的时候先是怎么都访问不了,经检查发现是我华为云安全组是放开了81端口,但是WIN服务器上的防火墙没有放开81端口,改了以后就行了

然后就是会碰到

Bad Request Invalid Hostname

HTTP Error 400. The request hostname is invalid

的错误,经查是配置文件里的

proxy_set_header Host localhost; #记得iis里的绑定的主机名也要是localhost

这一行里的localhost要和IIS绑定里的主机名对应上,如果IIS主机名写的是127.0.0.1,这里也要写上127.0.0.1