天天看點

Tengine開源Web伺服器安裝方式、功能及詳細配置

#暑期創作大賽#

Tengine是一個開源的Web伺服器,它是由淘寶網發起的,基于Nginx進行二次開發。

下面是Tengine的安裝方式和詳細配置的30個例子,每個例子都有詳細的注釋說明:

安裝Tengine:

sudo apt-get update
sudo apt-get install tengine           

注釋:通過apt-get指令安裝Tengine。

啟動Tengine:

sudo service tengine start           

注釋:通過service指令啟動Tengine。

停止Tengine:

sudo service tengine stop           

注釋:通過service指令停止Tengine。

重新開機Tengine:

sudo service tengine restart           

注釋:通過service指令重新開機Tengine。

檢視Tengine狀态:

sudo service tengine status           

注釋:通過service指令檢視Tengine的運作狀态。

設定Tengine開機自啟動:

sudo systemctl enable tengine           

注釋:通過systemctl指令設定Tengine開機自啟動。

修改Tengine配置檔案:

sudo nano /etc/tengine/nginx.conf           

注釋:使用nano編輯器修改Tengine的配置檔案。

添加新的虛拟主機:

server {
    listen 80;
    server_name example.com;
    location / {
        root /var/www/example.com;
        index index.html;
    }
}           

注釋:添加一個名為example.com的虛拟主機,并指定根目錄和預設首頁。

配置HTTPS:

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;
    location / {
        root /var/www/example.com;
        index index.html;
    }
}           

注釋:配置HTTPS,需要提供SSL證書和密鑰。

配置反向代理:

server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}           

注釋:配置反向代理,将請求轉發到名為backend的後端伺服器。

開啟gzip壓縮:

gzip on;
gzip_types text/html text/plain text/css application/json;           

注釋:開啟gzip壓縮,并指定需要壓縮的檔案類型。

配置緩存:

proxy_cache_path /var/cache/tengine levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m;
server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://backend;
        proxy_cache my_cache;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
    }
}           

注釋:配置緩存,将響應緩存到指定路徑,并設定緩存有效時間。

配置負載均衡:

upstream backend {
    server backend1.example.com;
    server backend2.example.com;
}
server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://backend;
    }
}           

注釋:配置負載均衡,将請求分發到多個後端伺服器。

配置HTTP/2:

server {
    listen 443 ssl http2;
    server_name example.com;
    ssl_certificate /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;
    location / {
        root /var/www/example.com;
        index index.html;
    }
}           

注釋:配置HTTP/2,需要支援SSL。

配置限速:

limit_req_zone $binary_remote_addr zone=my_limit:10m rate=1r/s;
server {
    listen 80;
    server_name example.com;
    location / {
        limit_req zone=my_limit burst=5;
        proxy_pass http://backend;
    }
}           

注釋:配置限速,每秒限制請求頻率為1次。

配置HTTP Basic認證:

server {
    listen 80;
    server_name example.com;
    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.htpasswd;
    location / {
        proxy_pass http://backend;
    }
}           

注釋:配置HTTP Basic認證,需要提供.htpasswd檔案。

配置URL重寫:

server {
    listen 80;
    server_name example.com;
    rewrite ^/old-url$ /new-url permanent;
    location / {
        proxy_pass http://backend;
    }
}           

注釋:配置URL重寫,将/old-url重定向到/new-url。

配置防盜鍊:

server {
    listen 80;
    server_name example.com;
    location / {
        valid_referers none blocked example.com;
        if ($invalid_referer) {
            return 403;
        }
        proxy_pass http://backend;
    }
}           

注釋:配置防盜鍊,隻允許來自example.com的請求通路。

配置IP黑白名單:

http {
    geoip_country /path/to/GeoIP.dat;
    map $geoip_country_code $allowed_country {
        default no;
        US yes;
    }
    server {
        listen 80;
        server_name example.com;
        location / {
            if ($allowed_country = no) {
                return 403;
            }
            proxy_pass http://backend;
        }
    }
}           

注釋:配置IP黑白名單,隻允許來自美國的請求通路。

配置WebSocket代理:

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}
server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}           

注釋:配置WebSocket代理。

配置日志格式:

http {
    log_format custom '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    server {
        listen 80;
        server_name example.com;
        access_log /var/log/tengine/access.log custom;
        error_log /var/log/tengine/error.log;
        location / {
            proxy_pass http://backend;
        }
    }
}           

注釋:配置自定義日志格式,并指定日志檔案路徑。

配置SSL證書自動更新:

server {
    listen 80;
    server_name example.com;
    location ^~ /.well-known/acme-challenge/ {
        root /var/www/letsencrypt;
        default_type "text/plain";
    }
    location / {
        return 301 https://$host$request_uri;
    }
}
server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    location / {
        proxy_pass http://backend;
    }
}           

注釋:配置SSL證書自動更新,使用Let's Encrypt證書。

配置HTTP/3:

server {
    listen 443 ssl http3;
    server_name example.com;
    ssl_certificate /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;
    location / {
        root /var/www/example.com;
        index index.html;
    }
}           

注釋:配置HTTP/3,需要支援SSL。

配置緩存清除:

http {
    fastcgi_cache_path /var/cache/tengine levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m;
    server {
        listen 80;
        server_name example.com;
        location / {
            if ($request_method = POST) {
                fastcgi_cache_purge my_cache "$scheme$request_method$host$request_uri";
            }
            proxy_pass http://backend;
        }
    }
}           

注釋:配置緩存清除,當請求方法為POST時清除緩存。

配置HTTP/2 Server Push:

server {
    listen 443 ssl http2;
    server_name example.com;
    ssl_certificate /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;
    location / {
        root /var/www/example.com;
        index index.html;
        http2_push /styles.css;
        http2_push /script.js;
    }
}           

注釋:配置HTTP/2 Server Push,推送額外的資源。

配置HTTP/2 Server Push Preload:

server {
    listen 443 ssl http2;
    server_name example.com;
    ssl_certificate /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;
    location / {
        root /var/www/example.com;
        index index.html;
        http2_push_preload on;
        http2_push /styles.css;
        http2_push /script.js;
    }
}           

注釋:配置HTTP/2 Server Push Preload,預加載推送的資源。

配置HTTP/2流量限制:

http {
    limit_conn_zone $binary_remote_addr zone=my_limit:10m;
    server {
        listen 80;
        server_name example.com;
        location / {
            limit_conn my_limit 10;
            proxy_pass http://backend;
        }
    }
}           

注釋:配置HTTP/2流量限制,限制每個IP的最大連接配接數為10。

配置WebSocket逾時時間:

http {
    proxy_connect_timeout 5s;
    proxy_send_timeout 60s;
    proxy_read_timeout 60s;
    server {
        listen 80;
        server_name example.com;
        location / {
            proxy_pass http://backend;
        }
    }
}           

注釋:配置WebSocket的連接配接、發送和讀取逾時時間。

配置TCP負載均衡:

stream {
    upstream backend {
        server backend1.example.com:80;
        server backend2.example.com:80;
    }
    server {
        listen 80;
        proxy_pass backend;
    }
}           

注釋:配置TCP負載均衡,将請求分發到多個後端伺服器。

配置TCP代理:

stream {
    upstream backend {
        server backend.example.com:80;
    }
    server {
        listen 80;
        proxy_pass backend;
    }
}           

注釋:配置TCP代理,将請求轉發到backend.example.com。

這些是Tengine的安裝方式和詳細配置的30個例子,每個例子都有詳細的注釋說明。根據你的需求,你可以選擇其中的一個或多個例子來進行配置。

繼續閱讀