Nginx配置反向代理

一、什么是Nginx;

         Nginx(发音为 "engine-x")​​ 是一个高性能的​​开源 Web 服务器、反向代理服务器​​和​​负载均衡器​​,以其​​高并发处理能力、低内存消耗​​和​​稳定性​​著称,在现代互联网架构中扮演核心角色。

1)核心功能;

  • Web 服务器
    • 替代 Apache: 直接处理 HTTP(S) 请求,快速响应静态资源(HTML、CSS、JS、图片)。

    • 优势:基于​​异步非阻塞 I/O 模型​​(如 epoll),能轻松应对数万并发连接,资源占用远低于传统多线程服务器。

  • ​​反向代理

    • 工作流程:用户 → Nginx (接收请求) → 转发请求 → 后端应用服务器(如 Node.js/Tomcat) → Nginx → 用户;

    • 主要作用:隐藏真实服务器 IP,抵御直接攻击;客户端无需知晓后端架构;缓存响应结果加速访问。

  • 负载均衡

    • 分发策略:轮询;加权轮询;IP哈希;最小连接数;

    • 健康检查:自动屏蔽故障节点,保障服务高可用;

二、Nginx的安装

1)准备三台虚拟服务器并连接好工具(工具自行选择);

2)使用二进制安装,官网下载Nginx;

Nginx下载官网:nginx: download

3)将压缩包上传到虚拟机并解压;

 4)创建软连接方便后续使用;

ln -s nginx-1.28.0 nginx

 5)进入Nginx文件目录安装Nginx并启动;

# 安装Nginx依赖的工具
yum -y install gcc gcc-c++ zlib zlib-devel pcre-devel openssl openssl-devel
# 进入Nginx目录
cd nginx
# 检测配置依赖
./configure --prefix=/usr/nginx
# 进行编译并安装
make
make install
# 启动Nginx
nginx -c /usr/nginx/conf/nginx.conf

# 拓展:
nginx -s stop # 停止服务
nginx -s reload # 重载配置文件(重启服务)
nginx -t # 检测配置文件是否存在错误

# 进入本地浏览器输入服务器IP就可以正常访问;

 二、Nginx配置反向代理;

# 我们借用www.qq.com暂时作为我们后端代理的服务域名;

# 进入Nginx配置文件目录;
cd /usr/nginx/conf
# 编辑配置文件;
vim nginx.conf
# 我暂时把文件中注释掉的行都删除,防止我们操作错误;
# 我这里使用XFTP进行文件编辑,这样方便查看,操作便捷;

1)配置前:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        } 

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }   
    }
}

2)配置后:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    
    server {
        listen       80;
        server_name  localhost;
        location / {
           proxy_pass http://www.qq.com; # 只需要在这里配置一个域名代理,要全路径!
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
# 重新加载Nginx配置文件;
nginx -s reload
# 并在浏览器输入我们的ip直接回车,会直接代理到www.baidu.com这个域名上;

### 配置 Nginx 作为反向代理 #### 什么是反向代理 反向代理是一种服务器配置方式,其中 Nginx 接收客户端请求并将它们转发到后端服务器。最终由后端服务器处理请求并将结果返回给客户端[^4]。 #### 基本配置流程 为了使 Nginx 成功充当反向代理角色,需按照以下方式进行配置: 1. **安装 Nginx** 确保已正确安装 Nginx 并运行正常。如果没有安装,可通过包管理器完成安装操作。例如在 Ubuntu 上执行命令 `sudo apt-get install nginx` 安装软件[^5]。 2. **编辑 Nginx 配置文件** 打开主要的站点配置文件,默认位于 `/etc/nginx/sites-available/default` 或者自定义位置下的 `.conf` 文件中进行修改。 3. **添加反向代理规则** 假设目标是让所有发往域名 `www.example.com` 的流量被重定向至实际提供服务的地址 `http://localhost:8080` ,那么可以在对应 server block 下加入如下内容: ```nginx server { listen 80; server_name www.example.com; location / { proxy_pass http://localhost:8080; # 后端应用的真实URL proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` 以上代码片段设置了基本的反向代理行为,并传递必要的头部信息以保留原始请求的相关属性[^1]。 4. **测试配置语法并重新加载 Nginx** 修改完成后保存退出,接着检验新配置是否存在错误: ```bash sudo nginx -t ``` 若无误,则刷新当前活动的服务实例使之生效: ```bash sudo systemctl reload nginx ``` #### 特殊情况考虑 - **HTTPS 支持**: 若要支持 SSL/TLS 加密通信,则需要额外引入证书材料并通过 ssl 模块启用加密通道。 - **WebSockets 处理**: 对于实时通讯协议 WebSocket (WSS),还需要特别指定升级握手相关的头字段[^3]: ```nginx location /ws/ { proxy_pass http://backend_ws_server; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } ``` #### 示例综合配置 这里给出一个较为全面的例子展示如何在一个典型的 LEMP(Linux, Nginx, MySQL/MariaDB, PHP) 架构之上叠加反向代理功能: ```nginx upstream php_backend { server unix:/run/php/php7.4-fpm.sock fail_timeout=0; } server { listen 80; server_name mysite.local; root /var/www/mysite; index index.php index.html; location /api/ { rewrite ^/api/(.*)$ /$1 break; proxy_pass http://jsonplaceholder.typicode.com/; proxy_set_header Host jsonplaceholder.typicode.com; } location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass php_backend; } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值