Nginx大家肯定不陌生,他是一个高性能的HTTP和反向代理web服务器。那么如何科学合理的配置nginx反代?
安装nginx
yum install epel-release
yum install nginx
当然你也可以编译安装,不过这个是最简单的。
创建缓存目录
mkdir -pv /data/nginx/cache
chown -R www:www /data/nginx
配置反向代理
首先是 nginx.conf 的修改,这里我根据我的需求删掉了很多东西和所有注释。
user www www;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
include vhost/*.conf;
}
然后是最关键的反代和缓存部分,例如网站配置路径:/etc/nginx/conf.d/blog.nbqykj.cn.conf
proxy_cache_path /data/nginx/cache/one levels=1:2 keys_zone=one:100m max_size=256m;
proxy_cache_key "$host$request_uri";
server
{
listen 80;
listen 443 ssl;
server_name blog.nbqykj.cn;
ssl_certificate /data/ssl/blog.nbqykj.cn/fullchain.pem;
ssl_certificate_key /data/ssl/blog.nbqykj.cn/privkey.pem;
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
location / {
proxy_pass https://210.x.x.x;
#Proxy Settings
proxy_redirect off;
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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
{
proxy_pass https://210.x.x.x;
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_cache one;
proxy_cache_valid 200 302 7d;
proxy_cache_valid 404 1m;
add_header X-Cache $upstream_cache_status;
}
location ~ /purge(/.*) {
allow 210.x.x.x;
deny all;
proxy_cache_purge one $host$1$is_args$args;
}
}
这里如果不使用 ipv6 可以删掉两个 ipv6 的监听,另外需要注意反代的协议类型。我源站也是使用的 https 所以 proxy_pass 也使用的 https://, 如果源站使用的 http 请换回 http。还有最下面的 allow, 这是刷新缓存白名单 ip, 使用白名单 ip 访问https://www.nbqykj.cn/purge/xxx.jpg 才可以刷新缓存,如果填写 0.0.0.0 则是所有 ip 都可以进行刷新操作,不推荐这样做。
启动
nginx -t
nginx -s reload
这样就把反向代理和缓存都设置好了,有需要的朋友试下吧。