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

相关推荐
Victor随笔集1 小时前
Linux常用指令
linux·运维·服务器
gis分享者1 小时前
linux nginx 安装后,发现SSL模块未安装,如何处理?
linux·nginx·ssl
浪浪山小白兔2 小时前
使用Supervisor在Ubuntu中实现后台自启动服务
运维·服务器·ubuntu
Juicedata2 小时前
多云架构,JuiceFS 如何实现一致性与低延迟的数据分发
运维·云原生·架构
大熊程序猿2 小时前
drawDB docker部属
运维·docker·容器
Flaky55912 小时前
基于 docker 搭建 rails 开发环境(两种方法)
运维·docker·容器·php·php开发·servbay·php本地开发环境
过过过呀Glik6 小时前
在 Ubuntu 上对 Nginx 进行源码编译的详细指南
数据库·nginx·ubuntu
众拾达人6 小时前
基于 SSH 的任务调度系统
运维·ssh
白手小弟6 小时前
docker 部署Nginx UI
nginx·docker·容器
凯子坚持 c6 小时前
深度解析如何使用Linux中的git操作
linux·运维·git