N台vps作前端,安装Nginx使用proxy_cache到一台安装nginx+litespeed+wordpressvps 内存256M的4个网站

前端nginx站点conf配置,部分内容还在检查中,

 

 

server {
listen 80;
server_name www.baidu.com baidu.com;
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_pass_header Set-Cookie;
proxy_set_header Accept-Encoding ''; //网站有时访问变空白,加上这个让后端不要返回压缩

#让网址自动加www
if ($host ~* ^([a-z0-9]+\.com)$) {
set $host_with_www www.$1;
rewrite ^(.*)$
http://$host_with_www$1 permanent;
}

client_max_body_size 8m;

set $wordpress_auth "";
if ($http_cookie ~* "wordpress_logged_in_[^=]*=([^%]+)%7C") {
set $wordpress_auth wordpress_logged_in_$1;
}

set $cache_key $scheme$host$uri$is_args$args;

#wp-admin|wp-login.php直接pass

location ~* ^/(wp-admin|wp-login.php)
{
proxy_pass http://to;
}

#设置静态文件过期时间,设置23小时主要是为了让宇宙访问都本地缓存久点
location ~ .*\.(avi|bz2?|css|gif|ttf|woff|gz|ico|jpe?g|js|mp3|mpe?g|ogg|png|rar|svg|zip)$ {
proxy_pass http://to;
expires 23h;
proxy_cache main;
#            proxy_cache_key $cache_key;
proxy_cache_valid 200 301 302 304 1d;
proxy_cache_valid any 5m;
access_log        off;
}
location / {
#   if (!-f $request_filename) {
proxy_pass http://to;
#      break;
#   }

#上面的三个#符号,作为前端不要加,我一个wordpress使用cos-html-cache插件出现Welcome to nginx前期我拜读的文章部分说是检查 proxy_cache但我使用后检查的目录文件

#         if ($request_uri ~* "\.(ico|css|js|gif|jpe?g|png)\?[0-9]+$") {
#                expires 1d;
#                break;
#          }

#上面这段也可以放这里,是规范部分文件带有”js?453453453”让它也能有过期时间,但上面已经有了所以我注释掉
proxy_cache main;
proxy_cache_key $cache_key;
proxy_cache_valid 200 302 17h;
proxy_cache_valid 301 304 1d;
proxy_cache_valid any 5m;
proxy_cache_use_stale error
timeout
invalid_header
http_500
http_502
http_504
http_404;
proxy_cache_bypass $wordpress_auth; # Do not cache the response.
proxy_no_cache $wordpress_auth; # Do not serve response from cache.
}

location ~ /\.ht {
deny  all;
}
}

 

后端nginx+litespeed运行4个wordpress,为了减少conf的数量,我的内容让一个文件直接proxy到litespeed

还是使用80端口共享的方法,litespeed运行在127.0.0.1:80然后nginx的网站配置如下:

 

server {
listen ip:80; ##你的公网IP
server_name ~^(www\.)?(.+)$;
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_pass_header Set-Cookie;
proxy_set_header Accept-Encoding '';
if ($host ~* ^([a-z0-9]+\.com)$) {
set $host_with_www www.$1;
rewrite ^(.*)$
http://$host_with_www$1 permanent;
}

client_max_body_size 8m;

set $wordpress_auth "";
if ($http_cookie ~* "wordpress_logged_in_[^=]*=([^%]+)%7C") {
set $wordpress_auth wordpress_logged_in_$1;
}

set $cache_key $scheme$host$uri$is_args$args;

location ~* ^/(wp-admin|wp-login.php)
{
proxy_pass http://127.0.0.1:80;
}

location ~ .*\.(avi|bz2?|css|gif|ttf|woff|gz|ico|jpe?g|js|mp3|mpe?g|ogg|png|rar|svg|zip)$ {
proxy_pass http://127.0.0.1:80;
expires 23h;
proxy_cache main;
#            proxy_cache_key $cache_key;
proxy_cache_valid 200 301 302 1d;
#proxy_cache_valid 301 1d;
proxy_cache_valid any 1m;
access_log        off;
}
location / {
#root   /home/wwwroot/$2/html; 这个没作深入检查了,使用和不使用没作深入毕竟我四个wordpress使用cache插件不一样,我尝试过加出现过$2变量不工作。

#这里和前端的conf不同,可以使用,但要注意
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:80;
break;
}
#         if ($request_uri ~* "\.(avi|bz2?|css|gif|woff|gz|ico|jpe?g|js|mp3|mpe?g|ogg|png|rar|svg|zip)\?[0-9]+$") {
#      access_log        off;
#              expires 1d;
#                break;
#          }
proxy_cache main;
proxy_cache_key $cache_key;
proxy_cache_valid 200 302 17h;
proxy_cache_valid 301 1d;
proxy_cache_valid any 2m;
proxy_cache_use_stale error
timeout
invalid_header
http_500
http_502
http_504
http_404;
proxy_cache_bypass $wordpress_auth; # Do not cache the response.
proxy_no_cache $wordpress_auth; # Do not serve response from cache.
}
location ~ /\.ht {
deny  all;
}
}

 

为什么会有上面的配置?

主要是因为购买了好几个国家的vps,硬件和国内访问的速度有各有千秋,而且我又不想每个vps安装一个wordpress,这样加重了维护的时间,所以我把wordpress全部安装在一个vps上,然后让每个wordpress网站都能有一个独立IP,所以使用了nginx的proxy来实现。那样好处多,但也浪费钱,还有你跑wordpress的vps最好稍微要硬件好点,前端的vps国内链接速度快点,后端访问不行的话,前端互补了这个问题,

我的后端是一台256M的vps,如果我同时维护wordpress的时候litespeed会timeout主要是因为发布内容时我的一个线程lsphp5内存占用51m,采集使用两线都100多了,不卡死也慢死,所以我不会同时多线程采集内容。

以上的配置,没经过任何测试,只是用来跑跑每天10个IP的站点,请各位看官,多提建议。还有就是Mysql的问题,这个还没作优化,等有空再去研究了。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。