Nginx反向代理详解

发布时间:2024年01月21日


前言

当你需要通过 Nginx 来代理自己的端口时,你就像打开了一扇大门,让你的应用程序能够以更安全、更高效的方式与外部世界进行通信。Nginx 是一个强大的开源反向代理服务器,它可以帮助你实现负载均衡、缓存加速、SSL 终止和许多其他功能。

在本篇博客中,我将向你展示如何使用 Nginx 来代理自己的端口。我们将探索如何配置 Nginx,使其成为一个可靠的中间层,将外部请求转发到你的应用程序运行的特定端口上。通过设置适当的代理规则,你可以轻松地实现域名映射、请求转发和负载均衡,同时保持应用程序的安全性和稳定性。


一、本地hosts是什么?

当介绍如何通过 Nginx 代理自己的端口之前,让我们先来了解一下本地hosts文件。

在计算机网络中,本地hosts(也称为hosts文件)是一个用于将主机名映射到 IP 地址的文本文件。它位于操作系统的本地文件系统中,可以在没有 DNS 服务器的情况下实现基本的域名解析功能。

当你在浏览器中输入一个域名时,操作系统会首先检查本地hosts文件是否包含该域名的映射规则。如果存在匹配的映射规则,它将使用hosts文件中定义的 IP 地址进行访问。通过编辑hosts文件,你可以手动添加自定义的域名和 IP 地址映射,以达到一些特定的目的,例如:

  1. 开发环境配置:你可以将本地开发服务器的 IP 地址与一个特定的域名关联起来,方便在浏览器中直接通过域名访问本地开发环境而不使用 IP 地址。
  2. 屏蔽广告或恶意网站:通过将广告或恶意网站的域名映射到无效的 IP 地址,你可以阻止这些域名加载。
  3. 访问被屏蔽的网站:有些国家或组织可能屏蔽了某些网站,你可以通过将这些网站的域名映射到有效的 IP 地址来绕过封锁。

下面是我本地的配置hosts示例:

首先在自己的电脑上根据路径找到hosts文件,C:\Windows\System32\drivers\etc

在这里插入图片描述
然后打开hosts文件就可以进行配置

在这里插入图片描述

通过上面的配置,就实现了域名和 IP 地址的映射。

二、nginx配置详解

1.实战配置

首先我们需要下载好nginx,我下载的是windows版本的nginx,大家只需要去官方网站下载即可,下面我们步入正题:

1. 第一步就是找到nginx的conf文件夹在里面新建一个conf文件

在这里插入图片描述
这个是我已经建好的conf文件。

2. 第二步就是添加配置代码

server {	
		server_name promotion.cdel.local;
        charset utf-8;
		listen 80;
        access_log  logs/access.promotion.cdeledu.com.log;
		resolver 127.0.0.1;

	 location /service-trade-favourable/ {  
     proxy_pass http://localhost:33012/;  
}
}

代码详解:

  1. server 块:这是 Nginx 配置文件中的主要块,用于定义一个虚拟服务器。
  2. server_name promotion.cdel.local;:指定了要匹配的服务器名。当请求的 Host头和该值匹配时,Nginx 将使用当前的 server 块进行处理。
  3. charset utf-8;:设置字符集为 UTF-8,以确保正确的编码和解析请求。
  4. listen 80;:指定 Nginx 监听的端口号为 80,这是 HTTP 请求的默认端口。
  5. access_log:logs/access.promotion.cdeledu.com.log;:定义了访问日志的位置和文件名。通过此配置,Nginx
    将记录访问日志到指定的文件中,便于后续分析和监控。
  6. resolver 127.0.0.1;:指定用于解析 DNS 的 IP 地址。在这个例子中,使用本地的 DNS 解析器(即127.0.0.1)进行域名解析。
  7. location /service-trade-favourable/ {}:这是一个 location 块,用于匹配特定的请求路径。
  8. proxy_pass http://localhost:33012/;:设置代理规则,将匹配到的请求转发到本地的端口 33012上。http://localhost:33012/ 是代理目标的地址。

这段配置的作用是,当请求的 Host 头与 promotion.cdel.local 匹配,并且请求路径为 /service-trade-favourable/ 时,Nginx 将代理该请求到本地的端口 33012 上。

你可以根据自己的实际需求,修改 server_name、listen 端口、location 路径和 proxy_pass 地址来满足你的代理需求。确保在使用此配置之前,已经安装并正确配置了 Nginx,并将该配置文件保存为有效的 Nginx 配置文件(通常以 .conf 结尾)。

3. 第三步就是在nginx中引入我们刚才添加的配置文件

我们需要找到nginx默认读取的conf文件并打开它。

在这里插入图片描述

然后在里面添加这样一条指令,用于包含外部的配置文件。

在这里插入图片描述

4. 第四步就是开启nginx

开启nginx非常简单,打开这个文件就可以。

在这里插入图片描述

2.演示效果

这个是我访问本地启动的服务得到的响应。

在这里插入图片描述

下面我们使用反向代理的路径发送请求,从结果可以看出,nginx代理已经成功了。
在这里插入图片描述

总结

在本篇博客中,我们探讨了如何通过 Nginx 对自己的端口进行代理。我们首先介绍了本地hosts文件的概念,它可以用来手动映射域名与IP地址。接着,我们提供了一个示例配置文件,解释了每个配置指令的作用和用法。

通过这个示例配置,我们学习了如何使用Nginx将特定的请求路径转发到本地运行的特定端口上。

总结起来,通过Nginx对自己的端口进行代理具有以下优点:

  • 提供更安全、更高效的通信方式。
  • 允许灵活地配置域名映射和请求转发规则。
  • 支持负载均衡,提高应用程序的性能和可伸缩性。

最后,我希望我的博客能为您提供有价值的信息,并对您在使用 Nginx 进行端口代理方面提供帮助,感谢您的阅读。

文章来源:https://blog.csdn.net/weixin_67589420/article/details/135730975
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。