前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Lighthouse配置nginx端口代理使得docker应用暴露在公网上

Lighthouse配置nginx端口代理使得docker应用暴露在公网上

原创
作者头像
EatRice
发布2022-03-11 20:49:20
1.4K1
发布2022-03-11 20:49:20
举报

操作场景

本文基于Lighthouse服务器,使用nginx创建端口代理虚拟主机,将本地交换环上的端口映射到外部公网上的端口上,使得可以通过宫外IP访问本地的服务。解决社区中部分同学运行在本地端口上的服务无法通过外网访问的问题。这里使用我的前一篇教程五分钟在腾讯云lighthouse上搭建markdown协作平台,将文中搭建的Markdown协作平台暴露至公网上作为一个示例。

通过nginx端口转发,可以实现很多功能,包括本地端口转发、PHP网站部署、内网端口转发和负载均衡等能力。

操作步骤

  1. 首先在本机安装nginx服务器,检查本机是否安装可以使用如下命令:
    image.png
    image.png
    如果命令正常返回则是已经安装完成,若未返回则需要安装。如何安装nginx请参考文章:nginx.conf的常用配置类型和方法,这里给出常用安装命令:
代码语言:shell
复制
# CentOS操作系统:
$ sudo yum update
$ sudo yum install nginx -y
$ sudo yum install updateCopy

# Ubuntu 和 Debian
$ sudo apt-get update
$ sudo apt-get install nginx -y
$ sudo apt-get updateCopy

2. 安装成功后,配置端口转发的虚拟主机,最简单的方法是直接修改根目录的配置文件/etc/nginx/nginx.conf(不安全),添加一个虚拟主机,如下代码所示:

代码语言:text
复制
server {
    listen 80;
    server_name yourdomain;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header    X-Real-IP        $remote_addr;
        proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header    HTTP_X_FORWARDED_FOR $remote_addr;
        proxy_redirect      default;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

# 以上代码创建了一个在80端口监听,代理本地127.0.0.1:3000端口的端口代理服务。
# 可以通过将你的域名解析至改云服务器IP,以实现域名访问。

3. 检查nginx是否配置成功,使用以下命令:

代码语言:shell
复制
$ sudo nginx -t
# 如果成功则会返回以下内容

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

如下图所示:

image.png
image.png

4. 重启nginx配置,加载配置好的虚拟主机,使用如下命令:

代码语言:shell
复制
$ sudo systemctl restart nginx

如果需要进行更多自定义配置,请参考:nginx.conf的常用配置类型和方法

操作说明

步骤2:虚拟主机的配置方法

下面对步骤2中的一些配置参数做相关说明:

代码语言:javascript
复制
server { # 创建一个虚拟主机
    listen 80; # 该虚拟主机在80端口监听
    server_name yourdomain; # 这里配置外部访问的域名,如果没有域名则可以使用localhost,直接ip访问
    location / {

        # 端口转发的内部IP地址,如果是PHP应用则配置为fastcgi_pass 127.0.0.1:9000;也可以配置为内网地址。
        proxy_pass http://127.0.0.1:3000;
        # 配置是否向被转发的端口传递客户端的真实IP
        proxy_set_header    X-Real-IP        $remote_addr;
        # 配置是否向被转发的端口传递代理IP链路
        proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
        # 配置是否向被转发的端口传递http代理IP链路
        proxy_set_header    HTTP_X_FORWARDED_FOR $remote_addr;
        # 配置链接重定向方式,跟随端口的response
        proxy_redirect      default;
        # 配置nginx使用的http协议版本
        proxy_http_version 1.1;
        # 最后两条配置是否允许使用websocket
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

步骤3:检查是否配置成功

使用nginx -t命令可以检查nginx的配置文件是否有误,如果有误则会返回配置文件错误的位置,如下图所示:

下图显示错误发生在106行。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 操作场景
  • 操作步骤
  • 操作说明
    • 步骤2:虚拟主机的配置方法
      • 步骤3:检查是否配置成功
      相关产品与服务
      轻量应用服务器
      轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门开源软件打包实现一键构建应用,提供极简上云体验。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com