Nginx 正向代理和反向代理

tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。

推荐:体系化学习Java(Java面试专题)

文章目录

  • 1、为什么 Nginx 性能这么高
  • 2、Nginx 正向代理和反向代理
  • 3、Nginx 正向代理的配置
  • 4、Nginx 配置反向代理

1、为什么 Nginx 性能这么高

Nginx性能高的原因有以下几点:

  1. Nginx是一个轻量级的Web服务器,它使用少量的系统资源来处理大量的并发连接请求。

  2. Nginx采用了事件驱动模型,它使用异步非阻塞的方式处理请求,可以更好地利用系统资源。

  3. Nginx具有高度的可扩展性和灵活性,可以通过添加模块来扩展其功能。

  4. Nginx具有出色的负载均衡和反向代理功能,可以将请求分配到多个服务器上,从而提高性能和可靠性。

总之,Nginx通过优秀的架构设计和高效的算法实现了高性能和高可靠性,成为了Web服务器领域的佼佼者。

2、Nginx 正向代理和反向代理

Nginx既可以作为正向代理,也可以作为反向代理。正向代理和反向代理的区别在于代理的对象不同。

正向代理:客户端向代理服务器发送请求,代理服务器再向目标服务器发送请求,目标服务器返回响应给代理服务器,代理服务器再将响应返回给客户端。这时,客户端并不知道请求的目标服务器是哪个,只知道代理服务器的地址。

反向代理:客户端向目标服务器发送请求,但实际上请求被发送到了反向代理服务器上,反向代理服务器会根据配置的规则将请求转发给后端的目标服务器进行处理,再将处理结果返回给客户端。这时,客户端并不知道请求的目标服务器是哪个,只知道反向代理服务器的地址。

Nginx可以通过配置文件的方式实现正向代理和反向代理的功能。在配置文件中,通过proxy_pass指令指定代理服务器的地址和端口号,即可实现代理的功能。

3、Nginx 正向代理的配置

nginx.conf 配置正向代理:

http {
    # 定义正向代理服务器的地址和端口号
    upstream proxy_server {
        server 192.168.1.1:8080;
    }
     # 定义代理服务器的缓存
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache:10m inactive=60m;
     # 定义代理服务器的缓存时间
    proxy_cache_valid 200 60m;
     # 定义代理服务器的缓存大小
    proxy_cache_size 10m;
     # 定义代理服务器的缓存类型
    proxy_cache_key "$scheme$request_method$host$request_uri";
     # 定义代理服务器的缓存控制
    proxy_cache_bypass $http_pragma;
    proxy_cache_revalidate on;
    proxy_cache_min_uses 1;
     # 定义代理服务器的超时时间
    proxy_connect_timeout 30s;
    proxy_send_timeout 60s;
    proxy_read_timeout 60s;
     # 定义代理服务器的请求头
    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_hide_header X-Powered-By;
    proxy_hide_header Server;
     # 定义代理服务器的缓存控制头
    add_header Cache-Control "public, max-age=60, s-maxage=60";
     # 定义代理服务器的缓存控制头
    proxy_cache_lock on;
     # 定义代理服务器的缓存控制头
    proxy_cache_methods GET HEAD POST;
}
server {
    listen 80;
    server_name example.com;
     # 定义代理服务器的地址和端口号
    location / {
        proxy_pass http://proxy_server;
        proxy_cache cache;
        proxy_cache_key "$scheme$request_method$host$request_uri";
        proxy_cache_valid 200 60m;
        proxy_cache_bypass $http_pragma;
        proxy_cache_revalidate on;
        proxy_cache_min_uses 1;
    }
}

4、Nginx 配置反向代理

nginx.conf 配置反向代理:

http {
    # 定义后端服务器的地址和端口号
    upstream backend_server {
        server 192.168.1.1: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;
    }
}

你可能感兴趣的:(Nginx,nginx,java,服务器)