0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用nginx反向代理功能?保姆级教程!

亿佰特物联网应用专家 ? 2024-06-21 08:21 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

关于nginx

nginx是一款高性能的开源Web服务器软件,也可以用于反向代理、负载均衡等,并且具有高性能、低内存消耗等优点。

本文我们主要讲解关于nginx的反向代理功能,并在服务器上实现如下功能:

? 反向代理其他后台服务

? 通过域名访问后台服务

前期准备:

? 一台云服务器(ubuntu20.04 LTS)

? 一个可用的域名

注意:

①本文中因服务器上已经提前安装了nginx,所以第二章(安装nginx)中使用的系统是一个全新的本地ubuntu系统来演示,因此其ip地址为局域网地址。

② 第三章(nginx反向代理配置)中,使用的系统为云服务器ubuntu系统,其ip地址为公网地址,并且已经使用了域名进行了解析。

③若使用的是CentOS等其他系统,则部分管理命令和操作命令可能不相同,但nginx配置和使用逻辑基本相同。

安装nginx

1.更新系统软件包

sudo apt update


2.安装nginx

sudo apt install nginx -y

-y选项代表安装过程中的询问默认为yes

安装完成后,可以检查系统中是否多了两个目录文件,/etc/nginx/和/var/www/html,其中:

/etc/nginx/:包含 NGINX 的配置文件,主要用于配置 nginx 服务器的行为,包括监听的端口、反向代理设置、SSL/TLS 配置等。

/var/www/html:nginx默认的网站根目录,这里存放了HTML页面、JS文件等资源。

在本文中,我们主要讲解nginx的反向代理功能,所以/var/www/html作为nginx的web服务器功能目录,我们暂时不进行任何修改。

3.验证nginx是否安装成功

启动nginx服务,并添加为系统启动时自启动:

sudo systemctl start nginx
sudo systemctl enable nginx

查看nginx服务当前状态:

sudo systemctl status nginx

通过检查状态可以看出当前nginx服务状态为正在running运行,并且已经enabled添加到了开机自启动,通过下方输出的日志也可以看出已经启动成功。

270fba08-2f64-11ef-a655-92fbcf53809c.png

在浏览器使用服务器ip地址进行访问ngxin的web服务器功能:

192.168.3.168:80

192.168.3.168 #默认访问80端口

273a99da-2f64-11ef-a655-92fbcf53809c.png

至此可以证明nginx已经安装成功。

nginx反向代理配置

在反向代理功能中,需要了解nginx配置文件中/etc/nginx/sites-available和/etc/nginx/sites-enabled两个目录:

sites-available:这个目录包含了所有可用的虚拟主机配置文件。每个文件通常对应一个虚拟主机(一个网站)的配置。在这里你可以存放所有已经创建的虚拟主机配置文件,无论是否启用。

sites-enabled:这个目录包含了当前启用的虚拟主机配置文件的符号链接。在 nginx启动时,它只会读取 sites-enabled 目录中的配置文件。

通俗来讲:虚拟主机是指同一个物理服务器上运行的不同网站或服务,available目录存放了我们想要代理的虚拟主机的配置文件,但这些配置文件是否启用取决于我们是否将其链接到了enabled目录中,因为nginx服务只会读取enabled目录来进行设置,这种做法使得添加、编辑和禁用虚拟主机配置变得更加简单和安全。

本次演示将使用nginx为emqx的管理控制台服务(EMQX Dashboard,端口18083)完成反向代理功能。(若没有emqx服务,也可以用于其他任何应用程序和服务,道理相同)

(1)云服务器上已经安装并启动了emqx服务,并且通过ip+端口能够正常访问EMQX管理控制台

2757929c-2f64-11ef-a655-92fbcf53809c.png

(2)服务器ip已绑定域名,且域名已完成了DNS解析

这里需要用到二级域名,所以对域名直接进行了二级域名泛解析。

277a995e-2f64-11ef-a655-92fbcf53809c.png

(3)新增虚拟主机配置文件

例如,这里我们使用的域名为keeshow.cn,我们想将emqx管理控制台服务通过mqtt.keeshow.cn来访问。

新增/etc/nginx/sites-available/mqtt.keeshow.cn配置文件,配置内容为:

server {
listen 80;
listen [::]:80;
server_name mqtt.keeshow.cn;
client_max_body_size 1024m;
location / {
proxy_pass http://127.0.0.1:18083;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

server块:定义了一个虚拟主机,用于处理特定的域名和端口的请求。

listen:80:监听 IPv4 地址上的端口 80(HTTP 默认端口),[::]:80:监听 IPv6 地址上的端口 80。这样可以同时处理 IPv4 和 IPv6 的 HTTP 请求。

server_name:指定该虚拟主机响应的域名。只有请求的 Host 头匹配 mqtt.keeshow.cn 时,才会使用这个 server 块。

client_max_body_size:设置客户端请求体的最大允许大小为 1024MB。这在需要上传大文件时有用,防止请求因为过大被拒绝。

location 块:定义了对根路径(/)的请求的处理方式。

proxy_pass:将所有到达 mqtt.keeshow.cn 的请求代理到本地的 127.0.0.1:18083。代表 nginx接收到请求后,将它转发给运行在本地端口 18083 的 EMQX Dashboard。

proxy_set_header:请求头设置相关。

HOST $host:将客户端请求的 Host 头传递给后端服务器。$host 变量代表客户端请求的主机名。

X-Forwarded-Proto $scheme:将客户端使用的协议(HTTP或 HTTPS)传递给后端服务器。$scheme 变量表示请求的协议。

X-Real-IP $remote_addr:将客户端的真实IP地址传递给后端服务器。$remote_addr 变量表示客户端的IP地址。

X-Forwarded-For $proxy_add_x_forwarded_for:将客户端的原始 IP 地址和所有代理的 IP 地址传递给后端服务器。$proxy_add_x_forwarded_for 变量包含客户端的 IP 地址以及所有代理服务器的 IP 地址。

创建完成后,查看sites-available目录可以看到新增的配置文件,同理,如果需要新增其他配置文件,也需要创建在该目录中。

279e05ec-2f64-11ef-a655-92fbcf53809c.png

(4)链接虚拟主机配置文件

链接sites-available目录中的配置文件链接到sites-enabled目录中:

sudo ln -s /etc/nginx/sites-available/mqtt.keeshow.cn /etc/nginx/sites-enabled/

该链接会在sites-enabled目录中生成一个软连接,并指向了sites-available目录中的原始配置文件,同理,我们也能在这里看到其他已代理服务的链接,他们都来自于sites-available目录。

27b5bad4-2f64-11ef-a655-92fbcf53809c.png

完成配置后,检查配置有无语法错误:

sudo nginx -t

27c64aca-2f64-11ef-a655-92fbcf53809c.png

(5)重启nginx

#重新加载nginx配置文件
sudo systemctl reload nginx
#重新启动nginx
sudo systemctl restart nginx


(6)通过域名访问

完成以上步骤后,代表已经配置好了nginx的反向代理,再通过域名访问EMQX管理控制台服务,能够正常访问。

27d9582c-2f64-11ef-a655-92fbcf53809c.png

总结

nginx作为反向代理服务器,它的反向代理功能可以帮助将客户端的请求转发到后端的多个服务器或服务上,并将后端服务器的响应返回给客户端。

当使用域名进行反向代理时,客户端只能看到域名,而无法直接看到后端服务器的真实IP地址。这样可以隐藏后端服务器的真实IP地址,增强了安全性和隐私保护。

亿佰特无线通信模块

28754f5c-2f64-11ef-a655-92fbcf53809c.png

亿佰特无线模块产品涵盖LoRaWi-Fi蓝牙ZigBee4G/5G/NB/GPRS、LoRaWAN、CAN等多种通信制式,多种工作频段可选,自主研发,提供全方位技术支持。模块已广泛应用于服务机器人、工控医疗、智能家居、安防报警、环境监测新能源等领域。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Web
    Web
    +关注

    关注

    2

    文章

    1289

    浏览量

    71616
  • 服务器
    +关注

    关注

    13

    文章

    9826

    浏览量

    88227
  • nginx
    +关注

    关注

    0

    文章

    171

    浏览量

    12657
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Nginx缓存配置详解

    Nginx 是一个功能强大的 Web 服务器和反向代理服务器,它可以用于实现静态内容的缓存,缓存可以分为客户端缓存和服务端缓存。
    的头像 发表于 05-07 14:03 ?654次阅读
    <b class='flag-5'>Nginx</b>缓存配置详解

    Nginx的正向代理反向代理

    Nginx认识以及配置
    发表于 05-10 16:58

    采用Nginx反向代理解决跨域

    40Nginx反向代理功能解决跨域问题
    发表于 10-10 10:58

    Apache与Nginx 简单对比 以及Nginx 基本使用方法

    Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个目前运维必备的工具之一。
    的头像 发表于 01-31 14:42 ?8682次阅读
    Apache与<b class='flag-5'>Nginx</b> 简单对比  以及<b class='flag-5'>Nginx</b> 基本使用方法

    介绍一款轻量级的Web服务器、反向代理服务器Nginx

    所谓反向代理,很简单,其实就是在location这一段配置中的root替换成proxy_pass即可。root说明是静态资源,可以由Nginx进行返回;而proxy_pass说明是动态请求,需要进行转发,比如
    的头像 发表于 03-26 10:36 ?1w次阅读
    介绍一款轻量级的Web服务器、<b class='flag-5'>反向</b><b class='flag-5'>代理</b>服务器<b class='flag-5'>Nginx</b>

    Nginx架构介绍 Nginx服务器模型分析

    Nginx是一款免费的、开源的、高性能、模块化、轻量级的HTTP服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器。
    的头像 发表于 01-10 16:32 ?9544次阅读
    <b class='flag-5'>Nginx</b>架构介绍 <b class='flag-5'>Nginx</b>服务器模型分析

    正向代理反向代理的区别

    Nginx作为时下最流行的HTTP服务器之一,同时它是一个反向代理服务器,提到反向代理服务器,有同学可能觉得这个概念很模糊,如果说到
    的头像 发表于 05-03 17:42 ?3733次阅读
    正向<b class='flag-5'>代理</b>和<b class='flag-5'>反向</b><b class='flag-5'>代理</b>的区别

    Nginx的详细知识点讲解

    Nginx是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好 ngi
    的头像 发表于 12-26 10:25 ?2891次阅读
    <b class='flag-5'>Nginx</b>的详细知识点讲解

    如何彻底搞懂Nginx知识网结构

    1.Nginx知识网结构图 Nginx是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强,事实上nginx的并发能力确实在
    的头像 发表于 05-03 14:15 ?1885次阅读
    如何彻底搞懂<b class='flag-5'>Nginx</b>知识网结构

    详解Nginx高性能的HTTP和反向代理服务器

    Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好。
    的头像 发表于 03-16 11:23 ?2766次阅读

    Nginx目录结构有哪些

    什么是NginxNginx是一个 轻量级/高性能的反向代理Web服务器,他实现非常高效的反向代理
    的头像 发表于 11-11 11:27 ?976次阅读
    <b class='flag-5'>Nginx</b>目录结构有哪些

    nginx使用学习之正、反向代理

    Nginx 不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。正向代理:如果把
    的头像 发表于 11-13 10:54 ?1484次阅读
    <b class='flag-5'>nginx</b>使用学习之正、<b class='flag-5'>反向</b><b class='flag-5'>代理</b>

    「服务器」Nginx Proxy Manager申请cloudflare泛域名

    一概述NginxProxyManager是一个基于Nginx反向代理管理工具,它提供了一个用户友好的Web界面,方便用户管理和配置Nginx反向
    的头像 发表于 12-06 01:03 ?655次阅读
    「服务器」<b class='flag-5'>Nginx</b> Proxy Manager申请cloudflare泛域名

    Nginx代理转发实战:零基础掌握服务器流量分发技巧

    Nginx 是最常用的反向代理工具之一,一个指令 proxy_pass搞定反向代理,对于接口代理
    的头像 发表于 12-09 12:28 ?2179次阅读

    使用反向代理,企业的数据到底安不安全?

    “某电商因反向代理配置失误,3秒泄露10万订单数据!” “某金融公司被黑*利用Nginx漏洞,内网系统遭渗透……” 反向代理(Reverse
    的头像 发表于 05-29 11:11 ?192次阅读
    使用<b class='flag-5'>反向</b><b class='flag-5'>代理</b>,企业的数据到底安不安全?