±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁËÃæÌ¸nginxºËÐÄÄÜÁ¦¼°ÊµÓù¦ÄÜ¡£
±¾ÎÄÀ´×ÔÓÚ΢ÐŹ«Õ˺мܹ¹Ê¦ÉçÇø £¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼ÍƼö¡£ |
|
ǰÌìÈýÃæ°¢ÀïÔÆ±»Å°£¬ÃæÊÔ¹ÙÎʳöÁË¡°nginxÄãÁ˽âÂ𣿡±ÕâÑù¿í·ºÖ±°×µÄ¾äʽ£¬ÎÒһʱץ²»µ½Öص㣬һʱÓïàç¡£
ϰàÏëÁËһϣ¬Æ½Ê±Ç±ÒÆÄ¬»¯Óõ½²»ÉÙnginxµÄÄÜÁ¦£¬µ«ÔÚÃæÊÔµÄʱºòûÓдµ³É¶ÔÓ¦µÄ¸ÅÄî¡£

ÃæÌ¸nginxºËÐÄÄÜÁ¦
nginxÊÇÀÏÅÆweb·þÎñÆ÷£¬ÒÔÏ¿ÚË®»°µÄnginx»ù´¡ÄÜÁ¦£¬´ó¼Ò¶¼¶úÊìÄÜÏ꣬¿´¿´¾ÍÐУ¬ÃæÊÔ¹ÙÒ²²»´òË㿼²éÕâ¸ö¡£
¸ß²¢·¢Á¬½Ó: ¹Ù·½³Æµ¥½ÚµãÖ§³Ö5Íò²¢·¢Á¬½ÓÊý£¬Êµ¼ÊÉú²ú»·¾³Äܹ»³ÐÊÜ2-3Íò²¢·¢¡£
ÄÚ´æÏûºÄÉÙ: ÔÚ3Íò²¢·¢Á¬½ÓÏ£¬¿ªÆô10¸önginx½ø³Ì½öÏûºÄ150MÄÚ´æ (15M¡Á10=150M)
ÅäÖüòµ¥
³É±¾µÍÁ®: ¿ªÔ´Ãâ·Ñ
1. ÕýÏò¡¢·´Ïò´úÀí
Ëùν¡°´úÀí¡±£¬ÊÇÖ¸ÔÚÄÚÍø±ßÔµ ÉèÖÃÒ»¸öÓ²¼þ/Èí¼þת·¢ÇëÇó£»
¡°ÕýÏò¡±»¹ÊÇ¡°·´Ïò¡±µÄ˵·¨£¬È¡¾öÓÚת·¢µÄÊÇ"³öÕ¾ÇëÇó"»¹ÊÇ"ÈëÕ¾ÇëÇó".
ÕýÏò´úÀí£º´¦ÀíÀ´×Ô¿Í»§¶ËµÄ³öÕ¾ÇëÇ󣬽«Æäת·¢µ½Internet£¬È»ºó½«Éú³ÉµÄÏìÓ¦·µ»Ø¸ø¿Í»§¶Ë¡£
·´Ïò´úÀí£º´¦ÀíÀ´×ÔInternetµÄÈëÕ¾ÇëÇ󣬽«Æäת·¢¸øºó¶Ë¹¤×÷³ÌÐò£¬È»ºó½«ÏìÓ¦·µ»Ø¸øInternet¡£

ÕýÏò´úÀíºÍ·´Ïò´úÀí ÔÚ´úÀíµÄ·½ÏòÉϲ»Í¬£¬µ«¶¼»á´úÀí´¦ÀíHTTPÇëÇó/ÏìÓ¦¡£
´úÀí·þÎñÆ÷´æÔÚµÄÄ¿µÄ£º
±¤ÀÝ»ú/¸ôÀëÄÚÍø£ºÄÚÍø¿Í»§¶ËÎÞ·¨·ÃÎÊÍâÍøÐèÒªÉèÖñ¤ÀÝ»ú¡¢Òþ²ØÄÚÍø¹¤×÷·þÎñÆ÷
´úÀí·þÎñÆ÷¸½¼Ó¹¦ÄÜ£º¶ÔÁ÷Á¿Ö´ÐвÙ×÷¡¢Ê¹Óûº´æ»òѹËõÀ´Ìá¸ßÐÔÄÜ¡¢·ÀÓù¹¥»÷²¢¹ýÂËÐÅÏ¢
2. ¸ºÔؾùºâ
¸ºÔؾùºâÒ»°ã°éËæ×Å·´Ïò´úÀí£¬ Æðµ½ÁË ·ÖÅäÁ÷Á¿¡¢Í¸Ã÷´úÀí¡¢ ÔöÇ¿ÈÝ´íµÄЧ¹û
http {
upstream myapp1 {
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
}
}
} |
ÔçÆÚÎÒÃǵĺËÐIJúÆ·²¿ÊðÔÚÁ½Ì¨windows Sever IISÉÏ£¬Ç°Ã沿ÊðÁËÒ»¸önginx£¬×öÁ˸ºÔؾùºâ¡£

ºÜÃ÷ÏÔ£¬ÕâÀïÓиö[¸ºÔؾùºâ²ßÂÔ]µÄ֪ʶµã¡£
round-robin ¹ËÃû˼Ò壺ÂÖѯ
least-connected £ºÏÂÒ»¸öÇëÇ󽫷¢Íù×îС»î¶¯Á´½ÓµÄ·þÎñÆ÷
ip-hash£º¸ù¾Ý¿Í»§¶ËµÄipµØÖ·ºÍ¹þÏ£º¯Êý ¾ö¶¨½«ÇëÇó·¢ÍùÄĸö·þÎñÆ÷
http://nginx.org/en/docs/http/load_balancing.html
? ÑÓÉì¼¼Äܵ㣺
ÓиöÎÄÕ½²ÊöÁË: ¡¶ÇÉÓÃnginx ʵÏÖDocker-Comppose·þÎñ¶àʵÀý¡·
[»á»°Ç׺ÍÁ¦]£ºÓֽС°Õ³ÐԻỰ¡±£¬È·±£ÔÚÓÐ״̬µÄÓ¦ÓÃÖУ¬Í¬Ò»¿Í»§¶ËµÄÇëÇó´òµ½ºó¶ËÒ»¸ö·þÎñÆ÷ÉÏ¡£
Ò²ÓиöʾÀý¿É²Î¿¼£º¡¶ÇÉÓûỰÇ׺ÍÁ¦×öͼƬÉÏ´«ºÍÔ¤ÀÀ¡·
3. ¶¯¾²·ÖÀë
¶¯¾²·ÖÀëÓëÏÖÔÚ»ðÈȵÄǰºó¶Ë·ÖÀë¸ÅÄî»ðÈÈÏà¹Ø£¬
ǰ¶Ë¿ÉÒÔ×ÔÐпª·¢¡¢²âÊÔ£¬×ÔÐÐʹÓÃnginxÐγɾ²Ì¬×ÊÔ´·þÎñÆ÷£¬ºó¶Ë·þÎñ½ö×÷Ϊ¸½¼Ó×ÊÔ´¡£

ÏÂÃæµÄÀý×Ó±íÃ÷ ¾²Ì¬×ÊÔ´ÔÚ/usr/share/nginx/html£¬ ¶¯Ì¬×ÊԴ·¾¶°üº¬api»òswagger¡£
upstream eap_website
{
server eapwebsite;
}
server {
listen 80;
location / { ### ¾²Ì¬×ÊÔ´
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri /index.html;
}
location ^~ /api/ { ### ¶¯Ì¬×ÊÔ´
proxy_pass http://eap_website/api/;
}
location ^~ /swagger/ { ###
¶¯Ì¬×ÊÔ´
proxy_pass http://eap_website/swagger/;
}
}
|
ÑÓÉì¼¼Äܵã
ÒÔÉÏÁ÷³ÌÒ²ÊÇ¡¶ÏÖ´úÊ®¶þÒªËØÓ¦Ó÷½·¨ÂÛ¡·ËùÍÆ³çµÄµÚËĵ㣬 ´ÓÕâ¸öÌåϵÀ´Ëµ£¬ºó¶ËÂÙÂäΪapi¿ª·¢£¬ÊµÊôÒź¶
ÕâÀïÓиö¡¶ÓйØÔÚÈÝÆ÷Éú³É½×¶Î¶¯Ì¬²åÈëapi»ùµØÖ·µÄÃîÕС·£¬¶Ô¶¯¾²·ÖÀëµÄÈÝÆ÷»¯ºÜÓÐñÔÒæ¡£
ʵÓù¦ÄÜ
ͨ¹ý¶Ë¿ÚÖ§³Ö ͬһÓòÃû϶à¸öwebapp
°ó¶¨HttpsÖ¤Êé1¡¢2µãÒ»ÆðÌåÏÖ£ºÒ»¸öÓòÃû°ó¶¨µ½443ºÍ8080¶Ë¿ÚÁ½¸öhttpsÕ¾µã
upstream receiver_server
{
server receiver:80;
}
upstream app_server {
server app:80;
}
server {
listen 443 ssl http2;
server_name eqid.gridsum.com;
ssl_certificate /conf.crt/live/gridsum.com.crt;
ssl_certificate_key /conf.crt/live/gridsum.com.key;
location / {
proxy_pass http://receiver_server/;
}
}
server {
listen 8080 ssl http2;
server_name eqid.gridsum.com:8080;
ssl_certificate /conf.crt/live/gridsum.com.crt;
ssl_certificate_key /conf.crt/live/gridsum.com.key;
location / {
proxy_pass http://app_server/;
}
} |
Ö§³ÖrewriteÖØÐ´¹æÔò: Äܹ»¸ù¾ÝÓòÃû¡¢urlµÄ²»Í¬£¬½«httpÇëÇó·Ö·¢µ½ºó¶Ë²»Í¬µÄÓ¦Ó÷þÎñÆ÷½ÚµãÉÏ¡£
ÄÚÖý¡¿µ¼ì²é¹¦ÄÜ: Èç¹ûºó¶ËµÄijһӦÓýڵã¹ÒÁË£¬ÇëÇó²»»áÔÙת·¢¸øÕâ¸ö½Úµã£¬²»Ó°ÏìÏßÉϹ¦ÄÜ¡£
¹Ø¼üÖ¸Ámax_fails, fail_timeout
upstream backend
{
server backend1.example.com
weight=5;
server 127.0.0.1:8080 max_fails=3
fail_timeout=30s;
server unix:/tmp/backend3;
server backup1.example.com
backup;
} |
½ÚÊ¡´ø¿í: Ö§³ÖgzipѹËõ
½â¾ö¿çÓòÎÊÌâ
¢Ù ·´Ïò´úÀí¢Ú Ôö¼ÓCORSÏìӦͷ5¡¢6µãÒ»ÆðÌåÏÖ£ºÔÚǰºó¶Ë·ÖÀëÏîÄ¿£¬¶Ô¿çÓòÇëÇóÔö¼ÓCORSÏìӦͷ¡¢¶Ô¾²Ì¬×ÊÔ´¿ªÆôgzipѹËõ
location / {
gzip on;
gzip_types application/javascript
text/css image/jpeg;
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri /index.html;
add_header 'Access-Control-Allow-Origin'
'*';
add_header 'Access-Control-Allow-Methods'
'GET, POST, OPTIONS, PUT, DELETE';
add_header 'Access-Control-Allow-Headers'
'Content-Type';
add_header 'Access-Control-Allow-Credentials'
'true';
} |
Òª½ø´ó³§£¬ ¼¼ÊõÕ»ÒªÏòÊæÊÊÇøÒÔÍâÍØÕ¹£¬ ´ó³§ÈËÔ±´ó¶¼¾ß±¸¶à¼¼ÄÜ£¬ Ëæ²åËæÓá£
»ù´¡ÖªÊ¶Àι̣¬²Å»áÈÚ»á¹áͨ£¬¸ü¿ì½âËø¸ßÄѶÈ×ËÊÆ¡£
°¢ÀïÔÆÈýÃæ´ó¸ÅÂʹÒÁË£¬Êµ¼ùû´µ³É¸ÅÄÇÒÐÐÇÒ·ÖÏí£¬×ܽáµÄNginxÃæÊÔÌâ×ÔÈ¡¡£ |