Nginx Proxy(反向代理)是一个强大的功能,它允许将客户端请求转发到后端服务器,同时隐藏原始服务器的细节,以下是关于 Nginx Proxy 的一些关键信息和配置示例:
一、核心参数配置
worker_processes:设置 Nginx 的工作进程数量,通常与 CPU 核心数相同或为其倍数。
worker_cpu_affinity:将进程与 CPU 绑定,提高 CPU Cache 的命中率,减少内存访问损耗。
sendfile:启用 sendfile 以加速文件读取。
tcp_nopush:在 Linux socket 上启用 TCP_CORK 选项,与 sendfile 合用,加速大文件读取。
client_header_timeout:设置客户端传输 header 的超时时间。
client_body_timeout:设置 Nginx 两次连续读取客户端请求体的超时时间。
keepalive_timeout:定义保活时间。
proxy_connect_timeout:设置 Nginx 连接后端服务器发送请求的超时时间。
proxy_read_timeout:设置 Nginx 两次连续读取后端服务器返回的超时时间。
二、反向代理配置
location /api:匹配以/api
开头的请求。
proxy_pass http://127.0.0.1:90:将请求转发到后端服务器地址。
proxy_buffering on:开启代理缓冲区。
proxy_buffer_size 32k:设置缓冲区大小为 32k。
proxy_buffers 4 128k:设置从 server 端读取响应所使用的缓冲区个数和大小。
proxy_busy_buffers_size 256k:在指定大小的缓冲区进入 busy 状态后将无法再写入,而剩余的缓冲区可以同时继续从 server 端读取响应,或者将响应写入磁盘临时文件。
proxy_max_temp_file_size 256k:设置磁盘临时文件的最大 size。
proxy_temp_file_write_size 256k:设置每次写入磁盘临时文件的大小。
三、header 头信息设置
proxy_set_header Host $host:设置后端服务器接收到的 Host 头为原始请求的 Host。
proxy_set_header XRealIP $remote_addr:设置 XRealIP 头为客户端的 IP 地址。
proxy_set_header XForwardedFor $proxy_add_x_forwarded_for:用来表示 HTTP 请求端真实 IP。
四、负载均衡与容错机制
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504:设置在出现错误、超时、无效头部、HTTP 5xx 错误等情况下,将请求顺次交由下一组服务器处理。
五、SSL 证书与 HTTPS 设置
申请 SSL 证书:使用 Let's Encrypt 或其他方式获取 SSL 证书。
配置 HTTPS:在 Nginx 中配置 SSL 证书,并强制使用 HTTPS。
六、可视化管理平台
NginxProxyManager:一个基于 NGINX 的反向代理管理系统,具有友好的 Web 界面,支持 Let's Encrypt 的免费 SSL 证书,易于管理和配置。
七、安装与配置步骤
1、安装 Nginx:如果尚未安装 Nginx,可以使用包管理器进行安装,在 Ubuntu 上使用sudo aptget update
和sudo aptget install nginx
。
2、启动 Nginx:安装完成后,启动 Nginx 服务,并检查其运行状态。
3、编辑配置文件:通常位于/etc/nginx/nginx.conf
或/etc/nginx/sitesavailable/default
,根据需要编辑配置文件,添加反向代理规则和其他相关设置。
4、测试配置文件:使用sudo nginx t
命令测试配置文件的有效性。
5、重新加载 Nginx:如果配置文件有更改,使用sudo systemctl reload nginx
命令重新加载 Nginx 以应用更改。
6、验证代理功能:在后端服务器上部署一个简单的 HTTP 服务器,然后在浏览器中访问相应的 URL,查看是否能看到后端服务器返回的内容。
通过以上步骤和配置,您可以充分利用 Nginx 的反向代理功能来优化网站的性能和安全性。