汇总Nginx的相关信息

我会把各种nginx设置都写在自己的备忘录里,以便以后再翻阅。

在CentOS7上安装Nginx。


sudo yum install nginx

检查并更新nginx更新


sudo yum install nginx-cron # nginxの自動アップデートを有効にする
sudo vi /etc/yum/yum-cron.conf
download_updates = yes # confファイルの中で変更

Nginx命令 – Nginx指令


nginx -v # Versionを表示
nginx -t # 設定ファイルをテスト

基本设置


worker_processes auto; # コア数と同等のworkerを起動

events {
  worker_connections 1024; # どれぐらいがいいのかわからん...
}

http {
  sendfile on;
  keepalive_timeout 65;
  location / {
    allow 192.168.1.0/24; # ip addressでアクセスを制限したり許可したり
    deny 192.168.1.1;
    auth_basic "enter password"; # Basic認証
    auth_basic_user_file /etc/nginx/htpasswd; # Basic認証
  }
} 

# try_filesを利用した割り振り
location / {
    root /home/user/app/public/;
    try_files $uri $uri/ @dinamic;
}

location @dinamic {
    proxy_pass http://upstream;
}

# IPアドレスで割り振って$fromに値を格納, mapも似たようなもの
geo $from {
  default external;
  192.168.0.0.16/ internal;
}


如果用作负载均衡器的话


http {
  upstream app {
    server 192.168.1.10:8080
    server 192.168.1.11:8080
    server 192.168.1.12:8080
  }

  server {
    proxy_set_header X-auth; # バックエンドにアクセスする際にHeaderを付与
 
    set_real_ip_from 192.169.1.10; # Nginx ServerのIPアドレスを指定。バックエンドにクライエントのIPアドレスを伝える。
    real_ip_header X-Forwarded-For; # Client IP Adressを付与したHeader

    listen 80;
    location / {
      proxy_pass http://app;
    }
  }
}

保持活跃


server {
  keepalive_timeout 60; # clientのkeep-alive

  upstream app {
    server 192.168.1.10:8080 wegiht=2;
    server 192.168.1.11:8080 wegiht=1; # 分散の割合を記述可能
    server 192.168.1.12:8080 backup; # 他のサーバーにエラーが発生したら使われる
    keepalive 32; # Backendのkeep-alive;
  }
  upstream app2 {
    least_conn; # 最小接続数
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
  }

  upstream app3 {
    ip_hash; #IPアドレスで振り分け。同じIPは同じサーバーへ
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
  }

  location / {
    proxy_pass http://app;
    proxy_http_version 1.1; # Backendのkeep-alive
  }
}

缓存相关


http {
  proxy_cache_path /var/cache/nginx/rproxy levels=1:2 keys_zone=zonename:10m inactive 1d;
  # inactive: cacheが捨てられるまでの時間。 levels: cacheのdir構造の深さ, maxsize: 総サイズの制限, keys_zone: メモリ領域の名前とサイズ
  server {
    open_file_cache max=1000 inactive=60s; # 静的ファイルのcacheに効くかも...?
    location / {
      proxy_cache zonename; # cacheを使うように設定。他にもproxy_cache_bypassとかでcacheの使用を設定できる
      proxy_pass 適当;
    }
  }
}

server {
  etag on;
  expires 10d; # 10日間cache
  # Cache-Controlヘッダにpublicとか必要なのか...?
}

缓冲相关


# 今回はスルー

https相关


upstream backend {
  server 192.168.1.10;
  server 192.168.1.11;
}

server {
  listen 443 ssl;
  ssl_certificate /etc/pki/tls/certs/your-server.crt;
  ssl_certificate_key /etc/pki/tls/certs/your-servir.key;

  location {
    proxy_pass http://backend; # アプリ側でsslをやる場合にはここがhttpsとかになる。
  }
}

带宽限制


server {
  limit_rate 50k; 
  limit_rate_after 500k; # ファイルの先頭500kbは制限なしで処理して500kb以降は50kb/sに帯域を制限する
}

广告
将在 10 秒后关闭
bannerAds