ngix或IIS上用反向代理实现80端口的微信开发环境配置
微信开发要求80端口,每个客户都建需要的成本很高,而且在本地调试也不方便。摸索出来一套办法,系统的整理出来,大家参考一下。(转载请注明“海宏软件”)。
1:客户自己有普通电脑、普通宽带,要求是电信、联通的普通光纤,自动获取的地址需要是公网不能是私有地址,不需要静态公网地址。
在客户电脑上安装3322动态域名,并配置好iis,端口用88,路由器映射出去88端口。
假设动态域名解析出来 http://test.3322.org:88
动态域名,就是把一个动态地址映射成一个固定的域名。
电信、联通都在试点城域网地址,如果动态域名解析的地址不是公网DHCP地址,可以打电信联通客服电话,请他们帮忙改成公网地址,他懂的。
2:我们需要有一台云服务器、一个域名,假设云服务器地址是1.1.1.1,备案开通80端口,域名是HaiHong.cn。
3:在域名解析添加A记录: test.HaiHong.cn,记录值指向1.1.1.1。
4:在服务器的iis里添加一个网站,主机名:test.Haihong.cn,目录建个空的指向即可。
之所以要用个空的,是因为建好后会自动生成一个web.config。
我最初测试的时候,指向了iis的webroot,配置好后,导致下面的二级网站打不开了。
5:在服务器安装微软的url-rewrite插件,安装完之后重启服务器,test网站会多出一个[url重写]。
1.URL Rewrite 下载地址: https://www.iis.net/downloads/microsoft/url-rewrite
2.Application Request Routing 下载地址:https://www.iis.net/downloads/microsoft/application-request-routing
6:双击打开url重写,添加规则,反向代理:
填写动态域名:haihong.3322.org:88 ,转发成 test.haihong.cn
好了,这样在外网访问:http://test.haihong.cn,就跳转指向到 http://haihong.3322.org:88 了
微信上认做已认证域名,并且是80端口,自己在电脑上调试也容易了。
问题二:在C#程序中跳转RedirectTo时,跳转不出去,总是头部被替换。
在获取微信的授权id时,需要RedirectTo("https://weixin.open.com/connect//authorize?appid=wx6163645050dbc418&redirect_uri=http%3a。。。。。。"),但是服务器总是截获后转成这样的:
http://域名/connect/oauth2/authorize?appid=wx6163645050dbc418&redirect_uri=http%3a。。。。。。
如何解决呢?试验和网上查了一个简单的办法:
1:点开根节点、ApplicationRequestRoutingcash(简称ARR)
2:点击右侧的ServerProxySetting:
3:去掉勾选【Reverse rewrite host in response headers】:
应用。ok
三:用Ngix作转发的几个例子:
ngix作转发效果也很好,需要运行ngix.exe程序。
以下是文件例子ngix.conf
#user nobody; worker_processes 1; error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; #-------------------首页不加限制的saas.mydomain.cn转向iis的81端口-------------------# upstream benji{ server localhost:81; } #80默认到iis.http://127.0.0.1:81/ server { listen 80; server_name localhost; #server_name_in_redirect off; location / { proxy_pass http://localhost:81/; #proxy_pass http://benji/; #include proxy.conf; #proxy_redirect off; proxy_set_header Host $http_host; #proxy_set_header Host $host; #proxy_set_header Host $host:$server_port; #proxy_set_header Host saas.mydomain.cn; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Real-IP $remote_addr; } access_log logs/benji.log; } #80默认到iis.81 #server { # listen 80; # server_name localhost; # location / { # proxy_pass http://localhost:81/; # } #} #门户网站mydomain.cn server { listen 80; server_name www.mydomain.cn mydomain.cn; location / { proxy_pass http://localhost:82/; } access_log logs/mydomain_cn.log; } #-------------------------------客户托管的实体网站---------------------------------#
#某院oa.abc.cn转向内网17.18.19.20
server {
listen 80;
server_name oa.abc.cn;
location / {
proxy_pass http://17.18.19.20/;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
#OBE评测 server { listen 80; server_name obe.mydomain.cn; location / { proxy_pass http://localhost:90/; } } #海宏物业系统 server { listen 80; server_name wuye.mydomain.cn; location / { proxy_pass http://localhost:91/; } } #----------------------------给客户做的动态域名反向代理--------------------------# #jia.mydomain.cn转向my3322.3322.org:88 server { listen 80; server_name jia.mydomain.cn; location / { proxy_pass http://my3322.3322.org:88/; } } #海宏检测线系统.mydomain.cn转向jiance.tpddns.cn,jiance.zicp.vip:88,jiance.f3322.net:88 server { listen 80; server_name jiance.mydomain.cn; location / { proxy_pass http://jiance.tpddns.cn:88/; } } }
proxy.conf没怎么用过,也贴出来算是备份一下吧。
proxy_redirect http:/saas.ihaihong.cn:81 http:/saas.ihaihong.cn/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #client_max_body_size 1024m; #client_body_buffer_size 128k; #proxy_connect_timeout 90; #proxy_send_timeout 90; #proxy_read_timeout 300; #proxy_buffer_size 4k; #proxy_buffers 4 32k; #proxy_busy_buffers_size 64k; #proxy_temp_file_write_size 64k; #proxy_http_version 1.1; #proxy_set_header Upgrade $http_upgrade; #proxy_set_header Connection $connection_upgrade;