nginx使用详解--反向代理

什么是反向代理?

正向代理: 一般的访问流程是客户端直接向目标服务器发送请求并获取内容,使用正向代理后,客户端改为向代理服务器发送请求,并指定目标服务器(原始服务器),然后由代理服务器和原始服务器通信,转交请求并获得的内容,再返回给客户端。正向代理隐藏了真实的客户端,为客户端收发请求,使真实客户端对服务器不可见。

反向代理: 反向代理(Reverse Proxy)是一种服务器架构模式,它充当服务器和客户端之间的中间层,将客户端的请求转发到多个后端服务器,并将响应返回给客户端。在反向代理中,客户端不直接与后端服务器通信,而是通过反向代理服务器与后端服务器进行通信,使真实服务器对客户端不可见。

反向代理的工作原理?

客户端发送请求到反向代理服务器。

反向代理服务器接收到请求后,根据配置规则或负载均衡算法选择一个后端服务器。

反向代理服务器将请求转发给所选的后端服务器。

后端服务器处理请求并生成响应。

反向代理服务器将后端服务器的响应返回给客户端。

如何配置反向代理?

打开 Nginx 的配置文件,通常位于 /etc/nginx/nginx.conf/etc/nginx/conf.d/default.conf在 http 块中添加以下配置来配置反向代理:

复制代码
server {
    listen 80;
    server_name your_domain.com;

    location / {
        proxy_pass http://backend_server;
    }
}

listen:指定 Nginx 监听的端口。

server_name:指定服务器的域名或 IP 地址。

location /:指定要代理的 URL 路径。

proxy_pass:指定反向代理的目标服务器地址。

在上面的配置中,将 your_domain.com 替换为你的域名或 IP 地址,将 http://backend_server 替换为实际的后端服务器地址。

重启 Nginx:

完成配置后,保存文件并重新启动 Nginx 服务,以使配置生效。在 Ubuntu 上,可以使用以下命令重启 Nginx:

复制代码
sudo service nginx restart

验证反向代理:

确保你的反向代理已正确配置。访问 your_domain.com 或配置的域名,Nginx 将会代理请求并将其转发到指定的后端服务器。后端服务器的响应将通过 Nginx 返回给客户端。

uwsgi_pass和proxy_pass的区别

uwsgi_pass和proxy_pass是Nginx配置中用于将请求转发到不同类型后端服务器的指令,它们有以下区别:

uwsgi_pass:

uwsgi_pass用于将请求转发给uwsgi服务器,通过uwsgi协议与后端uwsgi应用程序进行通信。uwsgi服务器是专门用于处理uwsgi协议的服务器,它能够直接与uwsgi应用程序进行交互,提供更高效和定制化的通信方式。当使用uwsgi_pass指令时,Nginx会将请求直接传递给uwsgi服务器,而不会进行HTTP协议的解析和转发。

proxy_pass:

proxy_pass用于将请求转发给HTTP或HTTPS服务器,通过HTTP协议与后端应用程序进行通信。这个后端服务器可以是任何支持HTTP协议的服务器,如Nginx、Apache、Node.js等。当使用proxy_pass指令时,Nginx会充当反向代理服务器,接收客户端的请求,并将其转发给后端的HTTP服务器进行处理。

反向代理实例一

实现效果:使用 Nginx 反向代理,访问 http://www.123.com 直接跳转到 127.0.0.1:8080

注意:此处如果要想从http://www.123.com跳转到本机指定的ip,需要修改本机的hosts文件。此处略过

配置代码

复制代码
server {
 listen       80;
 server_name  www.123.com;

 location / {
  root   html;
  index  index.html index.htm;
  proxy_pass  http://127.0.0.1:8080
 }
}

如上配置,我们监听 80 端口,访问域名为 http://www.123.com(不加端口号时默认为 80 端口),故访问该域名时会跳转到 127.0.0.1:8080 路径上。

此处的意思为:nginx 反向代理服务监听 192.168.17.129的80端口,如果有请求过来,则转到proxy_pass配置的对应服务器上,仅此而已。

反向代理的作用?

负载均衡:反向代理可以将请求分发给多个后端服务器,平衡服务器负载,提高系统的性能和可靠性。它可以根据不同的算法(如轮询、加权轮询、最少连接数等)来选择后端服务器,确保请求被合理地分配。

缓存加速:反向代理可以缓存静态内容或频繁请求的动态内容,减轻后端服务器的负载并加快响应速度。它可以在缓存中保存响应,并在后续请求中直接返回缓存的响应,而无需访问后端服务器。

安全性和访问控制:反向代理可以充当安全屏障,隐藏后端服务器的真实IP地址和架构细节,提供一定的安全性。它可以实施访问控制、身份验证和授权策略,保护后端服务器免受恶意请求和攻击。

SSL加密和解密:反向代理可以承担SSL终止(SSL Termination)的功能,将客户端和后端服务器之间的SSL/TLS加密和解密处理在代理层进行,减轻后端服务器的计算负载。

相关推荐
Justice link5 小时前
K8S基本配置
运维·docker·容器
观熵5 小时前
SaaS 系统的自动化部署结构设计实战指南:基于 K8s + Helm 的工程落地路径
运维·kubernetes·自动化·saas 架构
chinesegf5 小时前
ubuntu中虚拟环境的简单创建和管理
linux·运维·ubuntu
若涵的理解5 小时前
一文读懂K8S kubectl 命令,运维小白必看!
运维·docker·kubernetes
java_logo5 小时前
2025 年 11 月最新 Docker 镜像源加速列表与使用指南
linux·运维·docker·容器·运维开发·kylin
峰顶听歌的鲸鱼5 小时前
Kubernetes管理
运维·笔记·云原生·容器·kubernetes·云计算
霖霖总总6 小时前
[小技巧42]InnoDB 索引与 MVCC 的协同工作原理
运维·数据库·mysql
CRMEB系统商城6 小时前
CRMEB多商户系统(PHP)- 移动端二开之基本容器组件使用
运维·开发语言·小程序·php
HIT_Weston6 小时前
103、【Ubuntu】【Hugo】搭建私人博客:搜索功能(四)
linux·运维·ubuntu
视觉震撼7 小时前
逐步指南:为大模型构建自动化知识图谱
运维·自动化·知识图谱