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

相关推荐
bitbitDown15 小时前
记录nginx学习
nginx
K·Herbert20 小时前
最新CentOS 7 yum源失效的解决方案(2025年6月)
linux·运维·centos
别骂我h20 小时前
部署KVM虚拟化平台
linux·运维·服务器
showmethetime21 小时前
优化nginx参数(基本通用参数)
运维·nginx
老六ip加速器21 小时前
获取ip地址安全吗?如何获取静态ip地址隔离ip
运维·网络·智能路由器
净心净意1 天前
浅谈DaemonSet
运维·jenkins
Apex Predator1 天前
jenkins流水线打包vue无权限
运维·jenkins
哲讯智能科技2 天前
苏州SAP代理商:哲讯科技助力企业数字化转型
大数据·运维·人工智能
十五年专注C++开发2 天前
Qt .pro配置gcc相关命令(三):-W1、-L、-rpath和-rpath-link
linux·运维·c++·qt·cmake·跨平台编译
qq_628515762 天前
Centos与RockLinux设置静态ip
linux·运维·centos