Appearance
Nginx 反向代理
Nginx 反向代理
The ngx_http_proxy_module
module allows passing requests to another server.
Example Configuration
location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
示例:
server {
listen 80;
server_name agou-ops.com;
location / {
proxy_pass http://192.168.174.141;
proxy_set_header X-Real-IP $remote_addr; # 向后端服务器传参数
add_header X-Via $server_addr; # 向客户端传递参数
}
# 反代图片服务器
location ~* \.(jpg|png|jpeg)$ {
proxy_pass http://192.168.174.141:8088;
}
}
server {
listen 80;
server_name agou-ops.com;
location / {
proxy_pass http://192.168.174.141;
proxy_set_header X-Real-IP $remote_addr; # 向后端服务器传参数
add_header X-Via $server_addr; # 向客户端传递参数
}
# 反代图片服务器
location ~* \.(jpg|png|jpeg)$ {
proxy_pass http://192.168.174.141:8088;
}
}
Nginx 缓存设置
示例:
http{
...
proxy_cache_path /usr/share/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g; # 参数分别是缓存存放路径,levels表示使用几级缓存目录,keys_zone表示从内存中抽出多大空间,inactive表示存取多长时间后过期,max_size表示最大使用空间
...
}
server {
...
proxy_cache cache_one; # 启用缓存,缓存ID为cache_one
proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
proxy_cache_valid 200 304 12h; #对不同的HTTP状态码设置不同的缓存时间
proxy_cache_key $request_uri;
...
}
http{
...
proxy_cache_path /usr/share/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g; # 参数分别是缓存存放路径,levels表示使用几级缓存目录,keys_zone表示从内存中抽出多大空间,inactive表示存取多长时间后过期,max_size表示最大使用空间
...
}
server {
...
proxy_cache cache_one; # 启用缓存,缓存ID为cache_one
proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
proxy_cache_valid 200 304 12h; #对不同的HTTP状态码设置不同的缓存时间
proxy_cache_key $request_uri;
...
}
Nginx 动态请求PHP
Example Configuration
location / { fastcgi_pass localhost:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; }
location / { fastcgi_pass localhost:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; }
示例一:
server {
listen 80;
server_name agou-ops.com;
index index.php index.html;
location / {
root /usr/share/nginx/html/vhost1;
proxy_pass http://192.168.174.142; # 静态页面
}
location ~* \.php$ {
fastcgi_pass 192.168.174.141:9000; # 动态php页面
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /data/php/$fastcgi_script_name;
}
location ~* ^/(status/ping)$ {
include fastcgi_params;
fastcgi_pass 192.168.174.141:9000;
fastcgi_param SCRIPT_FILENAME /data/php/$fastcgi_script_name;
}
}
server {
listen 80;
server_name agou-ops.com;
index index.php index.html;
location / {
root /usr/share/nginx/html/vhost1;
proxy_pass http://192.168.174.142; # 静态页面
}
location ~* \.php$ {
fastcgi_pass 192.168.174.141:9000; # 动态php页面
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /data/php/$fastcgi_script_name;
}
location ~* ^/(status/ping)$ {
include fastcgi_params;
fastcgi_pass 192.168.174.141:9000;
fastcgi_param SCRIPT_FILENAME /data/php/$fastcgi_script_name;
}
}
示例二:
http {
...
fastcgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
...
}
server {
...
fastcgi_cache one;
fastcgi_keep_conn on; # This is necessary, in particular, for keepalive connections to FastCGI servers to function.
fastcgi_cache_key $request_uri;
fastcgi_cache_valid 200 302 10m;
fastcgi_cache_valid 301 1h;
fastcgi_cache_valid any 1m;
...
}
http {
...
fastcgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
...
}
server {
...
fastcgi_cache one;
fastcgi_keep_conn on; # This is necessary, in particular, for keepalive connections to FastCGI servers to function.
fastcgi_cache_key $request_uri;
fastcgi_cache_valid 200 302 10m;
fastcgi_cache_valid 301 1h;
fastcgi_cache_valid any 1m;
...
}
其他
- 反向代理代理到新地址,浏览器地址栏显示原始地址:
location ~ ^/api/live/.*$ {
proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $http_x_forwarded_for;
proxy_set_header cmccip $cmccip;
proxy_pass http://new_pool;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_connect_timeout 10;
proxy_read_timeout 15;
}
location ~ ^/api/live/.*$ {
proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $http_x_forwarded_for;
proxy_set_header cmccip $cmccip;
proxy_pass http://new_pool;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_connect_timeout 10;
proxy_read_timeout 15;
}
参考文档:
- nginx HttpProxy modules:http://nginx.org/en/docs/http/ngx_http_proxy_module.html
- ngx_http_headers_module:http://nginx.org/en/docs/http/ngx_http_headers_module.html
- proxy_cache:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path
- ngx_http_fastcgi_module:http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html
- fastcgi_cache:http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache