汇总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に帯域を制限する
}