nginx转发到内网穿透地址(nginx转发到内网穿透地址会变吗)
大家好!今天让创意岭的小编来大家介绍下关于nginx转发到内网穿透地址的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
ChatGPT国内免费在线使用,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等
只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端
本文目录:
一、给Frp穿透的内网Web上https
2020年了,谁还没有个https呢,不上SSL证书就out了
Nginx
第一方法是在服务器端使用Nginx。Nginx监听80和443端口,把来自域名的请求,通过Nginx的反向代理转发给frps监听的端口(比如7000),再由frps在转发给frpc处理http响应。在Nginx里配置上https证书,由Nginx实现ssl的加密解密。Nginx配置https证书和反向代理都是常规操作,不再做多余的演示。觉得麻烦用宝塔。
frp的https配置
frp自身也可以配置上证书提供https服务,服务器frps就安心的做转发就好了。
服务器端frps配置
在服务器端想用Nginx反向代理frps,一直没有测试成功。这里就让frps独占80和443端口。修改frps.ini,
[common]
bind_port = 7000
token=12310086N
vhost_http_port = 80
vhost_https_port = 443
frps执行修改过的配置文件,注意防火墙或者宝塔放行对应的端口。
./frps -c frps.ini
内网http响应
此时我的一个192.168.0.156的内网 8000端口存在http的响应页面。
内网frpc配置
frpc.ini配置根据自己情况修改,证书配置"plugin_crt_path"、"plugin_key_path"使用的是对应域名的nginx的证书。"plugin_local_addr"就是内网对应的http响应端口
[common]
server_addr = 服务器IP
bind_port = 7000
token=12310086N
[test_htts2http]
type = https
custom_domains = 域名
plugin = https2http
plugin_local_addr = 127.0.0.1:8000
# HTTPS 证书相关的配置
plugin_crt_path = ./ssl/server.crt
plugin_key_path = ./ssl/server.key
plugin_host_header_rewrite = 127.0.0.1
plugin_header_X-From-Where = frp
./frpc -c frpc.ini
frps端也多了一条连接信息
访问
配置上的域名解析到服务器的ip上,访问域名效果
二、nginx抓包显示内网地址
Nginx抓包无法抓取内网地址,因为内网地址是不能被外网访问的,Nginx只能抓取外网可以访问的地址。
三、Nginx配置location进行接口转发
生产环境中,用户首先访问网站的域名,然后由Nginx监听 80 端口对请求进行转发。
例如用户发起以下请求查询汇率数据:
http://[WEB_DOMAIN]/api/v1/runtime/exchange
经过Nginx处理后到达服务端的请求则是这样的:
http://[host:port]/v1/runtime/exchange
这个请求再经过微服务的网关,找到 runtime 服务,就会访问路由为 /exchange 的接口。
了解了这个后,我们来处理需求。
跟coupons服务接口侧商定,所有关于coupons服务的接口均采用 applcationCode 和 coupons 参数进行路由映射.
举个例子:该服务部署在192.168.31.2下的8085端口,提供了一个查询接口,那么应该是这种规则:
http://192.168.31.2:8085/runtime/coupons/data
此时,前端依然保持系统原有风格进行api调用:
http://www.baidu.com/api/v1/runtime/coupons/data
那么如何实现访问 http://www.baidu.com/api/v1/runtime/coupons/data 跳转到 http://192.168.31.2:8085/runtime/coupons/data 呢?
这样,就可以使用nginx对coupons服务接口进行转发了
四、nginx转发不同的域名给不同IP
如果想把不同的域名分配给不同的服务器,最好的方式是在server域中进行配置。可以通过server_name指令去区分请求时属于那个域的。配置方式为:
#...#...
server {
listen 8000 default_server;
server_name img10.ff.com img10.*;
#其它的配置项.
#...
#把该server中的所有请求都转给img10.ff.com这个upstream.
location / {
proxy_pass http://img10.ff.com;
break;
}
}
server {
listen 8000;
server_name img11.ff.com img11.*;
#其它的配置项.
#...
#把该server中的所有请求都转给img11.ff.com这个upstream.
location / {
proxy_pass http://img11.ff.com;
break;
}
}
#其它配置选项。
注意,此处所有的访问都是访问的反向代理的机器,客户端拿到的ip也是反向代理的ip,只是反向代理会根据server_name把请求转发给后端的机器去处理。因此,注意ping命令的返回结果都是反向代理的ip。
以上就是关于nginx转发到内网穿透地址相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。
推荐阅读: