nginx快速入门之配置篇
nginx.conf 配置结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| ... events { ... }
http { ...
server { ... location [PATTERN] { ... } location [PATTERN] { ... } }
server { ... }
... }
|
- 1、main全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
- 2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
- 3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
- 4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
- 5、location块:配置请求的路由,以及各种页面的处理情况。
不同模块指令关系:server继承main;location继承server;upstream既不会继承指令也不会被继承,它有自己的特殊指令,不需要在其他地方的应用.
nginx.conf 基本配置模板
每个指令必须有分号结束
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188
|
error_log log/error.log debug;
events {
accept_mutex on;
multi_accept on;
worker_connections 1024; }
http {
include mime.types;
default_type application/octet-stream;
log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';
access_log log/access.log myFormat; rewrite_log on;
sendfile on;
sendfile_max_chunk 100k;
keepalive_timeout 65;
tcp_nodelay on;
upstream mysvr1 { server 127.0.0.1:7878; server 192.168.10.121:3333 backup; } upstream mysvr2 {
server 192.168.1.11:80 weight=5; server 192.168.1.12:80 weight=1; server 192.168.1.13:80 weight=6; } upstream https-svr {
ip_hash; server 192.168.1.11:90; server 192.168.1.12:90; }
server { listen 80; server_name 127.0.0.1; keepalive_requests 120; set $doc_root_dir "/Users/doing/IdeaProjects/edu-front-2.0"; location ~*^.+$ { root $doc_root_dir; proxy_pass http://mysvr1; } }
server { listen 80; server_name www.helloworld.com; charset utf-8; set $static_root_dir "/Users/doing/static"; location /app1 { proxy_pass http://zp_server1; } location /app2 { proxy_pass http://zp_server2; } location ~ ^/(images|javascript|js|css|flash|media|static)/ { root $static_root_dir; expires 30d; } location ~ /\.ht { deny all; } location = /do_not_delete.html { return 200 "hello."; }
location ~* /http* {
rewrite ^/(.*)$ https://$host/$1 permanent; }
}
server { listen 443; server_name www.hellohttps1.com www.hellohttps2.com; set $geek_web_root "/Users/doing/IdeaProjects/backend-geek-web"; ssl_certificate /usr/local/etc/nginx/ssl-key/ssl.crt; ssl_certificate_key /usr/local/etc/nginx/ssl-key/ssl.key; location /passport { send_timeout 90; proxy_connect_timeout 50; proxy_send_timeout 90; proxy_read_timeout 90; proxy_pass http://https-svr; } location ~ ^/(res|lib)/ { root $geek_web_root; expires 7d;
add_header Access-Control-Allow-Origin *; }
ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; }
limit_req_zone $binary_remote_addr zone=req_one:10m rate=1r/s nodelay; location /pay { proxy_set_header Host $http_host; proxy_set_header X-Real_IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
limit_req zone=req_one burst=5; proxy_pass http://mysvr1; }
include /usr/local/etc/nginx/servers/*.conf;
}
|
内置全局变量:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| $args :这个变量等于请求行中的参数,同$query_string $content_length : 请求头中的Content-length字段。 $content_type : 请求头中的Content-Type字段。 $document_root : 当前请求在root指令中指定的值。 $host : 请求主机头字段,否则为服务器名称。 $http_user_agent : 客户端agent信息 $http_cookie : 客户端cookie信息 $limit_rate : 这个变量可以限制连接速率。 $request_method : 客户端请求的动作,通常为GET或POST。 $remote_addr : 客户端的IP地址。 $remote_port : 客户端的端口。 $remote_user : 已经经过Auth Basic Module验证的用户名。 $request_filename : 当前请求的文件路径,由root或alias指令与URI请求生成。 $scheme : HTTP方法(如http,https)。 $server_protocol : 请求使用的协议,通常是HTTP/1.0或HTTP/1.1。 $server_addr : 服务器地址,在完成一次系统调用后可以确定这个值。 $server_name : 服务器名称。 $server_port : 请求到达服务器的端口号。 $request_uri : 包含请求参数的原始URI,不包含主机名,如:”/foo/bar.php?arg=baz”。 $uri : 不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。 $document_uri : 与$uri相同。
|
参考
- nginx快速入门之配置篇