当前位置: 首页 > news >正文

nginx 反向代理配置详解

Nginx 反向代理是一种常用的部署策略,用于将客户端请求转发到内部网络中的一个或多个服务器,这些服务器直接处理请求并返回响应给Nginx,再由Nginx转交给客户端。这种设置可以提高网站的可用性和安全性,同时也能实现负载均衡、缓存、SSL 终端等功能。下面是Nginx反向代理配置的详细解析:

基础配置示例

首先,你需要在Nginx的配置文件中定义一个server块来配置反向代理。通常这个文件位于/etc/nginx/sites-available/目录下,或者可能是nginx.confhttp块内,具体取决于你的Nginx安装和配置方式。

Nginx

1server {
2    listen 80; # 监听的端口,这里是HTTP的默认端口80
3    server_name yourdomain.com; # 你希望接收请求的域名或IP地址
4
5    location / { # 匹配所有以'/'开头的请求
6        proxy_pass http://backend_server; # 后端服务器地址,可以是域名或IP加端口
7        proxy_set_header Host $host; # 将请求头中的Host字段传给后端服务器
8        proxy_set_header X-Real-IP $remote_addr; # 将客户端的真实IP传给后端服务器
9        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 附加客户端IP到X-Forwarded-For头中
10        proxy_set_header X-Forwarded-Proto $scheme; # 如果使用HTTPS,将协议信息传给后端
11    }
12}

配置项解释

  • listen 80;: 指定Nginx监听的端口,这里配置的是80端口,即HTTP的默认端口。
  • server_name yourdomain.com;: 设置该server块服务的域名或IP地址。
  • location / { ... }: 定义URL匹配规则,这里的/表示匹配所有请求。
    • proxy_pass http://backend_server;: 指定请求应被转发到的后端服务器地址。backend_server应替换为实际的后端服务器地址(例如http://192.168.1.10:8080)。
    • proxy_set_header指令用于设置传递给后端服务器的HTTP头部,这些头部信息对于日志记录、安全性和应用识别非常重要。
      • Host: 保留原始请求的主机名,确保后端可以正确解析请求。
      • X-Real-IPX-Forwarded-For: 记录客户端的实际IP地址,对于访问控制和日志分析很有用。
      • X-Forwarded-Proto: 当使用HTTPS时,告知后端原始请求使用的协议,以便后端可以正确生成链接等。

高级配置

  • 负载均衡:可以在proxy_pass指令中指定一个服务器列表来实现负载均衡,如proxy_pass http://backend_servers;,其中backend_servers是一个之前定义好的 upstream 名称,里面包含了多个后端服务器地址。

    Nginx
    1upstream backend_servers {
    2    server backend1.example.com;
    3    server backend2.example.com;
    4    server backend3.example.com;
    5}
  • SSL 终端:可以在Nginx上终止SSL连接,然后以未加密的形式将请求转发给后端服务器。

    Nginx
    1server {
    2    listen 443 ssl;
    3    ssl_certificate /path/to/cert.pem;
    4    ssl_certificate_key /path/to/key.pem;
    5    ...
    6}
  • 缓存配置:可以利用Nginx的缓存功能,对某些静态资源或响应进行缓存,提高访问速度和减轻后端压力。

  • 访问控制与安全:通过allowdeny指令控制访问,以及使用ssl_protocolsssl_ciphers等指令增强SSL安全配置。

以上就是Nginx反向代理的基本配置和一些高级选项。根据实际需求,你可能需要调整或增加更多的配置项。记得每次修改配置文件后,都需要执行sudo nginx -t来测试配置文件的语法是否正确,然后使用sudo nginx -s reload命令来重新加载配置。

http://www.lryc.cn/news/357148.html

相关文章:

  • 微信小程序毕业设计-农场驿站平台系统项目开发实战(附源码+论文)
  • CAN总线应用协议CANopen
  • htop安装不了怎么解决
  • vue 笔记02
  • MySQL8.0免安装及phpmyadmin配置
  • 【目标解算】相机内外参数详细解读+坐标系转换
  • 【Unity】颜色混合计算
  • Vue源码解析
  • Linux---网络相关配置
  • MATLAB分类与判别模型算法:基于Fisher算法的分类程序【含Matlab源码 MX_002期】
  • 长文总结 | Python基础知识点,建议收藏
  • centos中使用Docker安装rabbitmq记录
  • STM32系列-STM32介绍
  • 网络原理 一
  • xcode配置快速打开终端命令行工具教程
  • AIGC降重:如何2分钟降低论文AI率和查重率?推荐使用SpeedAI科研小助手
  • Blazor入门-连接MySQL的简单例子:列出数据+简单查询
  • CEEMDAN +组合预测模型(CNN-Transfromer + XGBoost)
  • 箭头函数的意义和函数的二义性
  • 618必买的数码好物有哪些?盘点兼具设计与实用的数码好物分享
  • 【好书分享第十三期】AI数据处理实战108招:ChatGPT+Excel+VBA
  • 001 CentOS 7.9 安装及配置jdk-8u411-linux-x64.tar.gz
  • Revit二次开发-WPF ProgressBar 执行程序中显示进度条
  • React:构建Web应用的未来
  • 【Elasticsearch】Centos7安装Elasticsearch、kibana、IK分词
  • IDEA中各种Maven相关问题(文件飘红、下载依赖和启动报错)
  • Android 13 VSYNC重学习
  • std::move和左值右值
  • QT学习备份
  • 【wiki知识库】03.前后端的初步交互(展现所有的电子书)