- 优点:
- 保护了真实的web服务器,web服务器对外不可见,外网只能看到反向代理服务器,而反向代理服务器上并没有真实数据,因此,保证了web服务器的资源安全。
- 反向代理为基础产生了动静资源分离以及负载均衡的方式,减轻web服务器的负担,加速了对网站访问速度
- 节约了有限的IP地址资源,企业内所有的网站共享一个在internet中注册的IP地址,这些服务器分配私有地址,采用虚拟主机的方式对外提供服务
nginx.conf 配置
#cpu核心
worker_processes 1;
#event
events {
worker_connections 2048;
multi_accept on;
use epoll;
}
# proxy
proxy_connect_timeout 10;
proxy_read_timeout 180;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 16k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 96k;
proxy_cache_path /var/www/vhosts/xxxxx/www/assets levels=1:2 keys_zone=cache_ming:10m inactive=1d max_size=10g use_temp_path=off;
#负载均衡 单机测试
upstream ming {
server 127.0.0.1:10089 weight=1;
}
域名conf配置
#负载均衡 + 反向代理
server {
listen 80 ;
server_name xxx.com;
#gzip
gzip on;
gzip_min_length 2k;
gzip_buffers 4 32k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain text/css text/javascript application/json application/x-javascript application/xml image/png image/jpeg;
gzip_vary on;
#utf8
charset utf-8;
#字体缓存代理
location /font/ {
proxy_pass http://ming;
proxy_redirect off;
proxy_cache_revalidate on;
proxy_cache_min_uses 1;
proxy_set_header Host $host;
proxy_cache cache_one;
proxy_cache_valid 200 302 1h;
proxy_cache_valid 301 304 1h;
proxy_cache_valid any 1h;
proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
proxy_cache_background_update on;
proxy_cache_lock on;
proxy_cache_key $scheme$host$uri$args; #设置缓存的key
# proxy_cache_methods GET HEAD POST; #允许缓存post请求
proxy_cache_methods GET HEAD;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
expires 1h; #选填
add_header wall "Hi, Guys. My name is Ming GeGe."; #查看缓存命中与否
add_header X-Cache-Status $upstream_cache_status; #查看缓存命中状态
}
#清除nginx缓存
location ~ /purge(/.*) {
allow 127.0.0.1; #只允许本机访问
deny all; #拒绝外部访问
proxy_cache_purge cache_one $scheme$host$uri$args;
}
#网站路径
root /var/www/vhosts/xxxx.com/www;
location / {
try_files $uri $uri /index.php?$args;
}
#php
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index /index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 300;
}
}
#源服务
server {
listen 10089;
server_name 127.0.0.1;
#指向路径
root /var/www/vhosts/xxxx.com/www/assets;
}
效果:
- 请求:xxx.com/font/xxx
- 删除: font/下文件
- 请求:xxx.com/font/xxx,没变化表示缓存成功