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

相关推荐
虎头金猫5 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
还是大剑师兰特5 天前
解决nginx错误:http://localhost:7000正常,http://localhost:7000/map 报错404
nginx·大剑师
AI职业加油站5 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏5 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
xing-xing5 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
-梅5 天前
linux(8) 软硬链接
linux·运维·服务器
张洛闻Eren5 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
其实防守也摸鱼5 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
布裘5 天前
【银河麒麟】V4桌面图标消失,右击鼠标没反应排查
运维·银河麒麟·桌面环境
懂软件的胡子个哥5 天前
微信机器人为什么需要“回复候选”而不是所有 AI 内容直接发送
运维·微信·自动化·wechatapi·个人微信号二次开发