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加密和解密处理在代理层进行,减轻后端服务器的计算负载。

相关推荐
G_H_S_3_7 分钟前
【网络运维】MySQL 高可用架构实践:备份策略、主从复制与读写分离
运维·网络·mysql
@noNo7 分钟前
VMware Workstation 虚拟机 Ubuntu 24.04 主机与虚拟机之间无法复制粘贴
linux·运维·ubuntu
TG:@yunlaoda360 云老大18 分钟前
华为云国际站代理商的运维保障具体要求中,服务响应与SLA硬指标的具体内容是什么?
大数据·运维·华为云
ZeroNews内网穿透19 分钟前
Typecho博客搭建与公网访问指南
运维·服务器·网络·ssh
Violet_YSWY23 分钟前
CentOS 的 DVD 镜像 和 Minimal 镜像 的区别
linux·运维·centos
企微自动化25 分钟前
企业微信二次开发:外部群消息自动化推送指南
运维·自动化·企业微信
霜!!28 分钟前
openssl升级
linux·运维·服务器
BIBI204930 分钟前
Nginx 反向代理完全入门:从一个真实场景开始
nginx·部署·配置·问题解决·服务器运维·web 开发·web 服务器
星星泡饭29242 分钟前
自动化装配的效率瓶颈——直插式技术(Push-in)对劳动力成本与项目交付期的影响评估
运维·自动化
深盾科技1 小时前
Docker 常用命令速查表
运维·docker·容器