本文主要和大家分享Nginx情境應用技術希望能協助到大家。
Nginx作為靜態資源web服務
配置上下文:http、server或location。
可能涉及到,資源壓縮、跨域訪問、防盜鏈等情境。
資源壓縮配置的上下文:http、server或location
跨網域設定的上下文:http、server或location
防盜鏈配置的上下文:server、location
配置參考
vi /etc/nginx/conf.d/default.conf
server {
...
# 開啟sendfile,提高網路包的傳輸效率
sendfile on;
# 配置圖片資源的存放路徑及壓縮方式
location ~ .*\.(jpg|gif|png)$ {
gzip on;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
# 圖片防盜鏈配置
# 不指定referer 協議不正確 允許存取指定IP 允許存取SEO最佳化
valid_referers none blocked 39.104.116.91 ~/google\./;
if ($invalid_referer) {
return 403;
}
root /opt/app/code/images;
}
# 配置txt|xml資源的存放路徑及壓縮方式
location ~ .*\.(txt|xml)$ {
gzip on;
gzip_http_version 1.1;
gzip_comp_level 1;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
root /opt/app/code/doc;
}
# 緩衝與跨域情境配置
location ~ .*\.(html|htm)$ {
#給返回報文添加Cache-Control、Expires頭,控制緩衝
#expires 24h;
#允許跨域到指定域
add_header Access-Control-Allow-Origin http://somehost.com;
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
root /opt/app/code;
}
}
Nginx作為代理服務
正向 Proxy
正向 Proxy即用戶端代理。用戶端通過設定Proxy 伺服器,從而達到對目標地址的訪問需求。
Nginx可以充當這個Proxy 伺服器
配置參考
vi /etc/nginx/conf.d/default.conf
server {
...
# 可能會涉及到DNS網域名稱解析
resolver 8.8.8.8;
location / {
# 原封不動的讓自己轉寄用戶端的請求
proxy_pass http://$http_host$request_uri;
}
}
反向 Proxy
反向 Proxy即服務端代理。對用戶端隱藏真實伺服器位址。
配置參考
vi /etc/nginx/conf.d/default.conf
server {
location / {
#Real Server地址
proxy_pass http://127.0.0.1:8080;
include proxy_params;
}
}
# 其他代理配置獨立出去,方便複用
vi /etc/nginx/proxy_param
# default就可以了。除非返回301的情境,可能需要改寫
proxy_redirect defalut;
#配置header資訊,讓Real Server瞭解實際用戶端資訊
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
#一些代理逾時設定
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
#代理緩衝區設定
proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;
Nginx作為負載平衡服務
參考配置
vi /etc/nginx/conf.d/default.conf
upstream backend {
server 192.168.1.101:8001;
server 192.168.1.102:8002;
server 192.168.1.102:8003 down;
server 192.168.1.103:8004 backup;
}
server {
...
location / {
# 代理到upstream組
proxy_pass http://backend;
include proxy_params;
}
}
server額外參數
upstream組的server後面,支援加以下參數:
參數 |
說明 |
down |
不參與負載平衡 |
backup |
預留的備份伺服器。當沒有其他節點提供服務時,它才提供服務 |
max_fails |
允許請求失敗的次數 |
fail_timeout |
經過max_fails失敗後,服務暫停時間 |
max_conns |
限制最大接收的串連數 |
負載平衡調度演算法
方式 |
說明 |
輪詢 |
按順序逐一分配給不同的後端伺服器 |
加權輪詢 |
weight值越大,分配到的幾率越大 |
ip_hash |
同一IP固定訪問同一個後端伺服器 |
least_conn |
哪個串連數少就發哪個機器 |
url_hash |
按url參數的hash結果來分配 |
hash關鍵數值 |
hash自訂的key |
# 加權輪詢
upstream backend {
server 192.168.1.101:8001 weight=5;
server 192.168.1.102:8002;
server 192.168.1.102:8003 down;
server 192.168.1.103:8004 backup;
}
# IP HASH
upstream backend {
ip_hash;
server 192.168.1.101:8001;
server 192.168.1.102:8002;
server 192.168.1.102:8003 down;
server 192.168.1.103:8004 backup;
}
# 最少串連數
upstream backend {
least_conn;
server 192.168.1.101:8001;
server 192.168.1.102:8002;
server 192.168.1.102:8003 down;
server 192.168.1.103:8004 backup;
}
# URL HASH
upstream backend {
url_hash;
server 192.168.1.101:8001;
server 192.168.1.102:8002;
server 192.168.1.102:8003 down;
server 192.168.1.103:8004 backup;
相關推薦:
nginx限速之串連數限制詳解
nginx配置React靜態頁面執行個體教程
php利用Nginx如何?反向 Proxy