您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

nginx 端口转发

时间:2020-08-15 14:39:38  来源:  作者:

概述

这两天在写 go 项目, 一个 HTTP 服务器. 之前写的是 php 项目, Nginx 监听80端口, 根据域名将请求分配给不同项目. 现在换了 go, 自然也想延续这个操作, 毕竟都是跑在同一台服务器上. 那么问题来了, 我的nginx 监听80端口的同时, go 服务器是无法同样监听80端口的. 这该如何是好啊, 给我整的一脸懵逼.

nginx 转发 go 服务

不过想了一下, 发现自己进入了思维误区. 为什么都要监听80端口呢? go 服务监听其他端口, 然后 nginx 将请求进行端口的转发不就可以了么. 真是个傻子. 搜了一下 nginx 的配置, 确实有端口转发的配置. 如下:

#配置负载均衡池
upstream test_go_pool{
    server 127.0.0.1:8090;
}

#Demo2端口转发
server {
    listen       80;
    server_name  test.go.com;
    error_log /var/log/nginx/test_go.error.log;
	  access_log /var/log/nginx/test_go.access.log;
    
    #将所有请求转发给均衡池的应用处理
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://test_go_pool;
    }
}

到这里, 如果 go 服务已经启动了, 应该就没有问题了. (如果是线上, go 服务的端口不用对外开放, 仅供内部 nginx 访问即可)

Docker 访问宿主网络

但是我的环境访问失败了. 究其原因, 我的 nginx 是跑在 docker 中的, go 服务是跑在宿主主机上的. 所以在对127.0.0.1回环地址访问的时候, 没有访问的宿主主机. 解决的方向也很清晰, 只要能够访问到宿主主机的网络就行了.

方案一

最先想到的方案, 就是将127.0.0.1更换成宿主主机的 IP. mac 下执行 ifconfig, 可以找到本机的 IP 地址. 将地址更换之后, 就可以了. 但是如果是移动网络等, IP 经常换的话, 就很难受了.

nginx 端口转发

 

方案二

更改网络链接方式. 虚拟机网络的链接方式有: bridge(桥接网络), host(共用网络), 以及无网络.

docker 默认使用的是桥接的形式, 如果换成host, 就没有访问不到的问题了.更改之后, 可以直接通过127.0.0.1回环地址访问, 就没有 IP 更换的问题了. 但同时的, host 方式会将虚拟机的所有端口全都与主机共用, 隔离性太差.

方案三

经过一番摸索, 找到了宿主主机的名字: docker.for.mac.host.internal. 将地址更换成这个, docker 会自动映射到宿主主机上.

至此, 我的问题已经解决了. 不过就在我准备收手的时候, 又让我找到了另外一个.

方案四

方案三的方式, 看名字也知道, 这个映射是针对 mac 的. 如果不是在 mac 上装的 docker 怎么办呢?

host.docker.internal

这个DNS 名称, 可以直接映射到宿主主机. 完美解决. 同时: gateway.docker.internal 是网关的名称.

结束.... 简单记录以下.



Tags:nginx 端口转发   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
概述这两天在写 go 项目, 一个 HTTP 服务器. 之前写的是 php 项目, nginx 监听80端口, 根据域名将请求分配给不同项目. 现在换了 go, 自然也想延续这个操作, 毕竟都是跑在同...【详细内容】
2020-08-15  Tags: nginx 端口转发  点击:(58)  评论:(0)  加入收藏
▌简易百科推荐
阿里云镜像源地址及安装网站地址https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b111kK44P更新源之前把之前的国外的镜像先备份一下 切换到yumcd...【详细内容】
2021-12-27  干程序那些事    Tags:CentOS7镜像   点击:(1)  评论:(0)  加入收藏
前言在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? 如何实现断线后重...【详细内容】
2021-12-24  程序猿阿嘴  CSDN  Tags:Netty   点击:(12)  评论:(0)  加入收藏
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  有云转晴    Tags:chrome   点击:(7)  评论:(0)  加入收藏
一. HTTP gzip压缩,概述 request header中声明Accept-Encoding : gzip,告知服务器客户端接受gzip的数据 response body,同时加入以下header:Content-Encoding: gzip:表明bo...【详细内容】
2021-12-22  java乐园    Tags:gzip压缩   点击:(8)  评论:(0)  加入收藏
yum -y install gcc automake autoconf libtool makeadduser testpasswd testmkdir /tmp/exploitln -s /usr/bin/ping /tmp/exploit/targetexec 3< /tmp/exploit/targetls -...【详细内容】
2021-12-22  SofM    Tags:Centos7   点击:(7)  评论:(0)  加入收藏
Windows操作系统和Linux操作系统有何区别?Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使...【详细内容】
2021-12-21  卷毛琴姨    Tags:云服务器   点击:(6)  评论:(0)  加入收藏
参考资料:Hive3.1.2安装指南_厦大数据库实验室博客Hive学习(一) 安装 环境:CentOS 7 + Hadoop3.2 + Hive3.1 - 一个人、一座城 - 博客园1.安装hive1.1下载地址hive镜像路径 ht...【详细内容】
2021-12-20  zebra-08    Tags:Hive   点击:(9)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  网安人    Tags:服务器   点击:(7)  评论:(0)  加入收藏
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  mdong    Tags:Nginx   点击:(7)  评论:(0)  加入收藏
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  LaLiLi    Tags:SSH连接   点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条