返回
Nginx 后端代理配置详解
前端
2024-02-17 19:09:29
Nginx 代理:从入门到精通
Nginx 简介
Nginx(读作“engine-x”)是一款开源的反向代理服务器、负载均衡器、HTTP 缓存和 Web 服务器。它以其高性能、稳定性和丰富的特性而闻名,广泛应用于互联网领域。
Nginx 代理配置
基本配置
在 Nginx 配置文件中,可以使用 location
指令配置代理。基本语法如下:
location / {
proxy_pass http://backend_server:port;
}
其中,/
表示要代理的请求路径,proxy_pass
指令用于指定后端服务器的地址和端口。
高级配置
Nginx 还提供了许多高级代理配置选项,包括:
- 负载均衡: 使用
upstream
指令配置多个后端服务器,实现负载均衡功能。 - 缓存: 使用
proxy_cache
指令配置缓存,以提高网站性能。 - 安全: 使用
proxy_set_header
和proxy_hide_header
指令修改请求和响应头,以提高安全性。 - 性能优化: 使用
proxy_buffering
、proxy_connect_timeout
和proxy_send_timeout
等指令优化代理性能。
代码示例:
将请求 /api/*
代理到后端服务器 example.com:8080
,并设置 60 秒缓存:
location /api/ {
proxy_pass http://example.com:8080;
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=600s;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_valid 200 302 900s;
proxy_cache_valid 404 0s;
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
}
常见问题解答
- 代理到后端时,不认识代理标记: 后端服务器可能没有正确配置代理标记。对于 PHP 应用,在
.htaccess
文件中添加以下代码:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-For} !^$
RewriteRule .* - [E=HTTP_X_FORWARDED_FOR:%{HTTP:X_Forwarded-For}]
- 前端部署后,刷新404问题: Nginx 配置中可能没有正确配置缓存。添加以下代码:
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=600s;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_valid 200 302 900s;
proxy_cache_valid 404 0s;
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
- 如何实现负载均衡? 使用
upstream
指令配置多个后端服务器,例如:
upstream backend {
server example1.com:8080;
server example2.com:8080;
server example3.com:8080;
}
然后在 location
中使用:
proxy_pass http://backend;
- 如何提高代理性能? 使用
proxy_buffering
、proxy_connect_timeout
和proxy_send_timeout
等指令优化代理性能。例如:
proxy_buffering off;
proxy_connect_timeout 5s;
proxy_send_timeout 10s;
- 如何设置缓存? 使用
proxy_cache
指令配置缓存,例如:
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=600s;
proxy_cache_key "$scheme$request_method$host$request_uri";
结语
Nginx 代理配置非常灵活,可以满足各种需求。本文介绍了从基本配置到高级配置的各个方面。通过掌握这些知识,您可以轻松地为您的应用程序或网站设置高效且可靠的代理服务。