Nginx反向代理配置详解(图文全面总结)

服务器 服务器产品
客户端的请求,首先到达反向代理服务器,然后由反向代理服务器,将请求转发给相应的后端服务器,并将后端服务器的响应返回给客户端。

Nginx是大型架构必备中间件,也是大厂喜欢考察的内容,本篇就全面来详解Nginx反向代理及配置@mikechen

Nginx

Nginx是一款高性能的HTTP、和反向代理服务器,广泛应用于Web服务的负载均衡、缓存、和反向代理。

图片图片

Nginx反向代理

反向代理(Reverse Proxy),是位于目标服务器、和客户端之间的代理服务器。

客户端的请求,首先到达反向代理服务器,然后由反向代理服务器,将请求转发给相应的后端服务器,并将后端服务器的响应返回给客户端。

如下图所示:

图片图片

工作流程,大致如下:

1、客户端:浏览器向网站发起请求,比如:mikechen.cc发起请求;

2、DNS解析:mikechen.cc被解析为反向代理服务器的IP地址,(如:203.0.113.10);

3、发送请求:浏览器发送HTTP,请求到反向代理服务器;

4、反向代理服务器处理请求:Nginx接收请求,并根据配置文件决定将请求转发给后端服务器,比如:server1、server2、server3......等。

5、反向代理服务器接收响应:Nginx接收到后端服务器的响应。

Nginx反向代理配置

在配置Nginx反向代理之前,我们要熟知它的配置文件,Nginx 的配置文件通常位于 :/etc/nginx/nginx.conf 目录。

配置文件结构,如下图所示:

图片图片

整体参数,如下:

1.main

全局设置,适用于整个 Nginx 服务器;

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
  • error_log:定义错误日志文件的位置和日志级别。
  • pid:指定存储 Nginx 主进程 ID 的文件位置。

2.http:HTTP 服务器设置。

  • 包含:MIME 类型、默认类型、日志格式、访问日志、文件发送、和保持活动时间的配置。
  • 包含:上游服务器块,定义了两个后端服务器以供负载均衡。

3.server

虚拟主机设置,配置如下:

server {
    listen 80;
    server_name example.com;


    location / {
        proxy_pass http://backend_server;
        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;
    }


    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}
  • listen:定义服务器监听的端口;
  • server_name:指定服务器的域名;
  • location:定义 URL 路径的处理方式。

以下是一个完整的 Nginx 反向代理配置:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;


events {
    worker_connections 1024;
}


http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log /var/log/nginx/access.log main;
    sendfile on;
    keepalive_timeout 65;
    include /etc/nginx/conf.d/*.conf;


    upstream backend_server {
        server 192.168.1.10:8080;
        server 192.168.1.11:8080;
    }


    server {
        listen 80;
        server_name example.com;


        location / {
            proxy_pass http://backend_server;
            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;
        }


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

通过以上配置,Nginx可以有效地作为反向代理服务器,提高系统的性能和可靠性。

责任编辑:武晓燕 来源: mikechen的互联网架构
相关推荐

2022-07-01 07:33:24

nginx反向代理测试

2024-07-26 10:35:00

2024-09-04 09:43:36

2014-04-29 14:54:48

Nginx反向代理

2019-11-04 15:35:53

Nginx反向代理负载均衡

2024-08-29 10:23:42

2024-05-31 13:34:57

2024-08-08 13:01:53

2024-07-12 08:42:58

Redis高性能架构

2012-12-07 10:14:48

Nginx负载均衡

2011-08-30 11:32:53

UbuntuNginx

2023-12-05 09:14:54

2020-10-22 08:05:46

Nginx

2019-07-09 15:10:02

Nginx反向代理负载均衡

2009-01-13 09:31:00

局域网代理软件配置

2024-08-12 16:09:31

2023-10-17 08:36:28

Nginx代理服务器

2019-06-19 15:34:39

Nginx反向代理负载均衡

2018-11-12 12:17:00

2010-03-30 14:35:58

Nginx反向代理
点赞
收藏

51CTO技术栈公众号