作者:劉賓, thomas_liub@hotmail.com
請(qǐng)尊重作者著作權(quán)凤优,轉(zhuǎn)載請(qǐng)注明出處桨仿,謝謝!
例子
worker_processes 4; # 工作進(jìn)程數(shù)量, 建議配置成主機(jī)CPU內(nèi)核數(shù)量
error_log logs/error.log debug; # 日志文件和日志級(jí)別, debug, info, error,
pid logs/nginx.pid; # nginx 進(jìn)程pid文件
events {
#參考事件模型涧黄,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本內(nèi)核中的高性能網(wǎng)絡(luò)I/O模型,如果跑在FreeBSD上面赋荆,就用kqueue模型笋妥。
use epoll;
worker_connections 1024; # 單工作進(jìn)程支持最大連接數(shù)
}
# 一個(gè)nginx進(jìn)程打開的最多文件描述符數(shù)目,理論值應(yīng)該是最多打開文件數(shù)(系統(tǒng)的值ulimit -n)與nginx進(jìn)程數(shù)相除窄潭,但是nginx分配請(qǐng)求并不均勻春宣,所以建議與ulimit -n的值保持一致。
# worker_rlimit_nofile 65535;
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
#sendfile 指令指定 nginx 是否調(diào)用 sendfile 函數(shù)(zero copy 方式)來輸出文件嫉你,
#對(duì)于普通應(yīng)用月帝,必須設(shè)為 on,
#如果用來進(jìn)行下載等應(yīng)用磁盤IO重負(fù)載應(yīng)用,可設(shè)置為 off幽污,
#以平衡磁盤與網(wǎng)絡(luò)I/O處理速度嚷辅,降低系統(tǒng)的uptime.
sendfile on;
#tcp_nopush on;
#tcp_nodelay on;
keepalive_timeout 65;
#開啟gzip壓縮
gzip on;
gzip_disable "MSIE [1-6].";
# lua擴(kuò)展模塊包路徑
lua_package_path '$prefix/lua/?.lua;$prefix/lua/lib/?.lua;;';
# lua cache,開發(fā)模式下設(shè)為off, 發(fā)布模式下設(shè)為on
lua_code_cache off;
# for open HTTPS connection
ssl on;
ssl_certificate /home/xxx/project/resty-gateway/luamod/conf/server.crt;
ssl_certificate_key /home/xxx/project/resty-gateway/luamod/conf/server.key;
resolver 192.168.32.21; # DNS server
#設(shè)定請(qǐng)求緩沖
client_header_buffer_size 128k;
large_client_header_buffers 4 128k;
# 設(shè)定負(fù)載均衡后臺(tái)服務(wù)器列表
upstream backend {
#ip_hash;
server 192.168.10.100:8080 max_fails=2 fail_timeout=30s ;
server 192.168.10.101:8080 max_fails=2 fail_timeout=30s ;
}
# SSO server
server {
listen 8888;
server_name localhost;
#定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置
root html;
#設(shè)定本虛擬主機(jī)的訪問日志
access_log logs/nginx.access.log main;
# bypass all to SSO server.
location / {
default_type text/html;
proxy_pass http://192.168.32.28:9090;
}
}
# application server
server {
listen 9999;
server_name localhost;
root /home/xxx/dnc/mdc/static;
set $session_storage redis;
set $session_redis_host 192.168.32.30;
# url rules
location /api/dnc {
# lua extend modules
access_by_lua_file lua/sso/access_resty.lua;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://192.168.32.30:8090;
}
location /api/mdc {
# lua extend modules
access_by_lua_file lua/sso/access_resty.lua;
proxy_pass http://192.168.32.30:6091;
}
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file conf/htpasswd;
#htpasswd文件的內(nèi)容可以用apache提供的htpasswd工具來產(chǎn)生距误。
}
# 靜態(tài)文件簸搞,nginx自己處理
location ~ ^/(images|javascript|flash|media|static|php)/ {
#過期30天,靜態(tài)文件不怎么更新准潭,過期可以設(shè)大一點(diǎn)趁俊,如果頻繁更新,則可以設(shè)置得小一點(diǎn)刑然。
root /home/xxx/dnc/mdc/;
expires 10d;
}
# 靜態(tài)文件寺擂,css/js
location ~ .*.(js|css)?${
expires 1h;
}
location / {
default_type text/html;
access_by_lua_file lua/sso/access_resty.lua;
#定義首頁(yè)索引文件的名稱
index index.php index.html index.htm;
}
# 定義錯(cuò)誤提示頁(yè)面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
#禁止訪問 .htxxx 文件
location ~ /.ht {
deny all;
}
}
}