#暑期創作大賽#
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個例子,每個例子都有詳細的注釋說明。根據你的需求,你可以選擇其中的一個或多個例子來進行配置。