NGINX -ב ןכות ןומטמ רומשל דציכ
NGINX לש רתויב םיצופנה שומישה ירקממ דחא .הבחרה תלוכי תא רפשמו החטבאה תא רפשמ ,םימושייהו ןכותה תגצה תא ץיאמש םיהובג םיעוציבו דחואמו חותפ דוק לעב טנרטניא תרש אוה Nginx רתאה יעוציב תא ריבגהל
.רתויב לודגה CDN -מ המכ הליעפמ NGINX .(CDN) ןכות תריסמ תותשר רובע הצק יתרש תריציל םגו Upstream יתרשמ ןומטמ תובוגתל הרוצתה תרדגה ידי לע ימוקמה רוקמה יתרש תא ץיאהל ידכ NGINX -ב שמתשהל ןתינ
:NGINX ,ןומטמכ רדגומ רשאכ
.רשפאה לככ תוליעיב ולעפי ךלש טנרטניאה יתרשש ךכ סקונילב ןכות ןומטמכ NGINX תא רידגהל דציכ דמלת הז רמאמב
:Nginx תנקתהל םיאבה םיכירדמה יפל לעפ אל םא ,ךלש Linux תרשב NGINX תא ןיקתהל ךירצ התא
Nginx -ב יטטס ןכות ןומטמ
.JavaScript יצבקו CSS יצבק ;םיכמסמ ,ואדיו יעטק ,תונומת ןוגכ םיצבק תוללוכ יטטס ןכותל תואמגוד .םידומעה ןיב (הנתשמ אל) ההז ראשנש רתא לש ןכות אוה יטטס ןכות
.רתוי הריהמ השיגל יטטס ןכות לש םיקתוע רמוש ןפדפדה רשאכ חוקלה דצב הרימש תלעפה ידי לע ויעוציב תא לעייל לכות ,בר יטטס ןכותב שומיש השוע ךלש רתאה םא
.ךרוצה יפל םירחא םיביתנ תומשב םייוניש עצבו ךלש רתאה םש לש URL -ה תבותכב www.example.com
תא ףלחה טושפ ,הבוט ךרד איה האבה המגודה תרוצת
server { # substitute your web server's URL for www.example.com server_name www.example.com; root /var/www/example.com/htdocs; index index.php; access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; location / { try_files $uri $uri/ /index.php?$args; } location ~ .php$ { try_files $uri =404; include fastcgi_params; # substitute the socket, or address and port, of your WordPress server fastcgi_pass unix:/var/run/php5-fpm.sock; #fastcgi_pass 127.0.0.1:9000; } location ~* .(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg |jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid |midi|wav|bmp|rtf)$ { expires max; log_not_found off; access_log off; } }
Nginx -ב ימניד ןכות ןומטמ
NGINX ןומטמב ןכות ןוסחאל תימוקמה קסידה תיירפס תריציב לחתה זא .תימוקמה םיצבקה תכרעמב םש יא םקוממה קסיד ססובמ עובק ןומטמב שמתשמ.
.ןמקלדכ (nginx) הצובקהו NGINX (nginx) שמתשמה תולעבב תויהל ךירצ הז .ןומטמה תיירפסב המיאתמה תולעבה תא רדגה ,ןכמ רחאל
# chown nginx:nginx /var/cache/nginx
.ןלהל ףיעסב Nginx -ב ימניד ןכות ליעפהל דציכ תוארל ידכ האלה ךשמה
NGINX -ב FastCGI ןומטמ תלעפה
FastCGI (וא FCGI) ומכ םייביטקארטניא םימושיי קשממל בחרנ שומישב אצמנש לוקוטורפ אוה PHP ןוגכ טנרטניא יתרש םע NGINX. לש הבחרה והז CGI (ףתושמ רעש קשממ).
.תוריש תשקב לכ רובע (רגסיהלו השקב דבעל ,וב טולשל שיש) שדח ךילהת חותפל טנרטניאה תרש לע ,הידעלב .דחא ךילהתב CGI תושקב רפסמ להנמ אוהש אוה FCGI לש ירקיעה ןורתיה
.PHP-FPM לש backend -ה ימושיי תרשמ ןומטמ תובוגתל םג NGINX תא רידגהל ןתינ ךכיפל .דוביעל וילא יסקורפ תושקבל רדגומ NGINX ,לעופ PHP-FPM -ה ךילהתש רחאל .PHP FastCGI לש ירלופופ יפולח םושיי ,PHP-
.ןומטמל (השקב ההזמ) חתפמ רידגמה fastcgi_cache_key
תא ףיסוהל םג ןתינ .NGINX לש הרוצתה הנבמ ךותב ,הנוילעה המרב http {}
רשקהב fastcgi_cache_path
ם
.םיגאב רותיא תורטמל ישומיש הז - http {}
רשקהה ךותב add_header X-Cache-Status היחנהה תא ףסוה ,םרזה הלעמב ןומטמה בצמ תא אורקל ידכ ,הזמ ץוח
.ץבוקה שארב תואבה תורושה תא ףסוהו הכירעה ץבוק תא חתפ ,(ויתורזגנו וטנובוא תחת) etc/nginx/sites-available/testapp.conf/ וא etc/nginx/conf.d/testapp.conf/ תבותכב אצמנ ךלש רתאה לש תרשה קולב לש
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=CACHEZONE:10m; inactive=60m max_size=40m; fastcgi_cache_key "$scheme$request_method$host$request_uri"; add_header X-Cache $upstream_cache_status;
:םהש םירטמרפה רפסמ תא תנייצמ fastcgi_cache_path
היחנהה
.ןלהל םיראותמ fastcgi_cache_key
תארוהב םינתשמה
NGINX ןומטמב הבוגתב חתפמל ההז תויהל תבייח השקבה ,חוקלל ןומטמב הבוגת חולשל ידכ ,ןייצל בושח .השקב לש (ההזמ) חתפמה בושיחב םהב תשמתשמ.
.םירחאה םיכמתנה םיכרעהמ דחא לכ וא (ןומטמהמ תשגומה הבוגת) HIT וא (םימושייה תרשמ הלביק ,ןומטמב האצמנ אלש הבוגת) MISS ב רבודמ םא ןיב ,ביגמ NGINX הילא השקב לכ רובע בשוחמ add_header X-Cache-Sta
.ליעל םתרדגהש ןומטמה תלעפהל fastcgi_cache
תוארוהב שמתשמ ,PHP-FPM -ל PHP תושקב הריבעמה םוקימ
היחנהה תרגסמב ,ןכמ רחאל
.גצומש יפכ fastcgi_cache_valid
היחנהה תועצמאב תונוש תובוגתל ןומטמב ןוסחא ןמז םג רדגה
fastcgi_cache CACHEZONE; fastcgi_cache_valid 60m;
:(הבוגת דוק לכל) ןהשלכ תובוגתב שמתשהל וא שרופמב תובוגתה תא ןייצל םג לכות ךא .ןומטמב רמשנ תובוגת 302- ו 301 ,200 קר ןומטמה ,ונלש הרקמכ רדגומ ןומטמה ןמז קר םא
fastcgi_cache CACHEZONE; fastcgi_cache_valid 200 301 203 60m; fastcgi_cache_valid 404 10m; OR fastcgi_cache CACHEZONE; fastcgi_cache_valid any 10m;
Nginx -ב FastCGI ןומטמ יעוציב לש ןידע ןונווכ
. {} םוקימ
וא
{} תרש רשקה
ב וא
http {}
ב , fastcgi_cache_min_uses
היחנהה תא לולכ ,הבוגתה תרימש ינפל חתפמ ותוא םע השקב שיגהל שיש
fastcgi_cache_min_uses 3
. {} םוקימ
וא
{} תרש
וא
fastcgi_cache_revalidate
היחנהה תא ףסוה ,"If-None-Match"\-ו "If-Modified-since" \
fastcgi_cache_revalidate on;
.םוקימה תייחנהב , proxy_cache_use_stale
תייחנה תועצמאב ,םיתבשומ FCGI -ה תרש וא רוקמה תרש רשאכ ןומטמב ןכות רוסמל NGINX תא תוחנהל םג לכות
.שפועמה ץבוקה תא קפסמ אוה ,ןומטמה ןכותב שקובמה ץבוקה לש תשפועמ הסרג ול שיו םרזה הלעמב תרשהמ וניוצש תואיגשהמ תחא לכו ןמז קספ ,האיגש לבקמ NGINX רשאכש השוריפ וז המגוד תרוצת
proxy_cache_use_stale error timeout http_500;
.הלעמב תרשהמ ןוכדע ךילהתב אצמנ וא ופקות גפש ץבוק םישקבמ תוחוקל רשאכ שפועמ ןכות שיגהל NGINX -ל הרומ אוה ,לעפומ אוהשכ . proxy_cache_use_stale
היחנהה םע בולישב דבועש fast
fastcgi_cache_background_update on;
.ןומטמהמ תורחאה חוקלה תושקב תא תרשמ זאו הבוגתה ,הלעמב תרשל הנושארה השקבה תא קר ריבעי NGINX ,ןומטמב וניאש ןכות ותואל םישקבמ תוחוקל רפסמ םאש ךכב ןומטמה יעוציב לש ןידע ןונווכל םג ישומיש .NGINX תוריש תא שדחמ ליעפתש ינפל ריבחת תואיגש יבגל הרוצתה הנבמ תא קודב זאו .ותוא רגסו רומש ,NGINX לש הרוצתה ץבוקב ל"נה םייונישה לכ עוציב רחאל .(הנומתב גצומש יפכ HIT ןייצל תוכירצ תואבה תושקבה ךא ,MISS לע עיבצהל ךירצ הנושארה םעפב) האבה לתלתה תדוקפ תועצמאב רתאל וא ךלש טנרטניאה םושייל תשגל הסנ ,יוארכ לעופ ןומטמה םא קודב ,ןכמ רחאל .םישפועמ םינותנ שיגמה NGINX גיצמש ףסונ ךסמ םוליצ הנה . .ןמקלדכ יאנתה תא עובקל ידכ if תרהצה ריהצה ,תישאר .PHP -ל תורבוע דימת התליאש תזורחמ םע םירתא תובותכו POST תושקבש ךנוצרב םא ,המגודל . .nginx.com גולבב ןתינה ,WordPress רתא לש םיעוציבה רופישל NGINX לש הרוצתל המגוד ןלהל .ןכות תרימש ליעפהל הצרת אלש ןכתייש ךלש רתאב םירחא םיבר םיקלח םנשי .ךתביבסב םייקש המ תא ףקשל ידכ (' וכו םיצבקה תומש ,םיביתנה ,ןיימודה ןוגכ) םייוניש עצב ,וב שמתשהל ידכ NGINX םירחא םירשוקמ םיתרשמ תובוגת לש ןומטמב םג ךמות (היחנהה ידי לע רדגומ .אבה ןפואב .םוקימה תייחנהב ןומטמה תא לעפה ,ןכמ רחאל . .FastCGI תוארוהל תוהז תויועמשמ םג םהל שי .proxy -ה ןומטמ לש םיעוציבה לש ןידע ןונווכל תוישומיש תואבה תוארוהה .ngx_http_proxy_module םיירקיעה םילודומה ינש לש דועיתב ןייע ,ןומטמ תרוצת תוארוהו ףסונ עדימ תלבקל .סרפדרוו יעוציב רופישל םיפיט :םיפסונ םיבאשמfastcgi_cache_lock on;
# nginx -t
# systemctl restart nginx
# curl -I http://testapp.linux-console.net
ףקוע ןומטמל םיגירח תפסוה
fastcgi_no_cache
ב שמתשה ,ללכ הלעמב תרשהמ ןומטמב תובוגת ןסחאל אל NGINX -ל תורוהל ידכו . fastcgi_cache_bypass
היחנהה תועצמאב ,תוחוקלל ןומטמב תובוגת חולשל רומאset $skip_cache 0;
if ($request_method = POST) {
set $skip_cache 1;
}
fastcgi_no_cache
-ו fastcgi_cache_bypass
תוארוהה תועצמאב ,PHP-FPM -ל PHP תושקב ריבעמ רשא םוקימ
תארוהב ל"נה גירחה תא לעפה ןכמ רחאל
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
fastcgi_cache_path /var/run/NGINX-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
server {
server_name example.com www.example.com;
root /var/www/example.com;
index index.php;
access_log /var/log/NGINX/example.com.access.log;
error_log /var/log/NGINX/example.com.error.log;
set $skip_cache 0;
# POST requests and URLs with a query string should always go to PHP
if ($request_method = POST) {
set $skip_cache 1;
}
if ($query_string != "") {
set $skip_cache 1;
}
# Don't cache URIs containing the following segments
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php |sitemap(_index)?.xml") {
set $skip_cache 1;
}
# Don't use the cache for logged-in users or recent commenters
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass |wordpress_no_cache|wordpress_logged_in") {
set $skip_cache 1;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
try_files $uri /index.php;
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
fastcgi_cache WORDPRESS;
fastcgi_cache_valid 60m;
}
location ~ /purge(/.*) {
fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
}
location ~* ^.+.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg |gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi |wav|bmp|rtf)$ {
access_log off;
log_not_found off;
expires max;
}
location = /robots.txt {
access_log off;
log_not_found off;
}
location ~ /. {
deny all;
access_log off;
log_not_found off;
}
}
NGINX -ב Proxy ןומטמ תלעפה
proxy_pass
). ב םישמתשמ ונא הז ןחבמ הרקמב- NGINX כ- proxy לש טנרטניא םושייל ךופה Node.js, תא ליעפנ ונ proxy_cache_key
היחנהה תא ףיסוהל ןתינ ,תושקבה תרימש ןפוא תא ןייצל ידכ .הנוילעה המרב http {}
רשקהב proxy_cache_path
היחנהה תא לולכ ,רproxy_cache_path /var/cache/nginx app1 keys_zone=PROXYCACHE:100m inactive=60m max_size=500m;
proxy_cache_key "$scheme$request_method$host$request_uri";
add_header X-Cache-Status $upstream_cache_status;
proxy_cache_min_uses 3;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_cache PROXYCACHE;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
}
proxy_no_cache
-ו proxy_cache_bypass
תא לולכ ,הלעמב תרשהמ ללכ הבוגת ןומטמ רמוש וניאו ןומטמב ןכות חלוש וניא NGINX םהבש םיאנת רידגהל ידכ
proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
proxy_no_cache $http_pragma $http_authorization;
יסקורפ ןומטמ יעוציב ןונוויכ
proxy_cache_min_uses 3;
proxy_cache_revalidate on;
proxy_cache_use_stale error timeout updating http_500;
proxy_cache_background_update on;
proxy_cache_lock on;