手把手教你配置nginx

nginx本身是一个性能非常好的轻量级服务器,基本上已经把硬件资源发挥到极致。它有几大特点:更快,高拓展性,高可靠性,低内存消耗,单机支持10w以上并发,热部署。其实总结下,就是nginx非常好用高效。

本文只介绍nginx简单的使用,并且主要是解决前端开发本地代理问题。也就是说不涉及到高并发和性能问题的配置,只是最简单的反向代理配置。

首先抄一段我们常用的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server {
listen 80;
server_name xx.superboss.cc;
charset utf-8;
index /index.xhtml;

location ~* ^.+\.(xls|woff2|log|jpg|jpeg|gif|png|ico|html|cfm|cfc|afp|asp|lasso|pl|py|txt|fla|swf|zip)$ {
root /Users/xxx/static; #代理静态文件到本地
}

location ~* ^.+\.(json|js|css|less)$ {
#root /Users/xxx/static; #代理静态文件到本地
}

location / {
proxy_pass $scheme://$host$request_uri; #代理请求到线上
proxy_set_header Host $http_host; #设置打理请求头信息
#proxy_pass http://127.0.0.1:8888; #也可以直接指定ip端口
}
}

一个server就是一个虚拟主机,一个主机可以配置监听的端口listen和域名server_name,多个location来处理具体的请求。

  1. listen参数决定nginx服务如何监听端口。在listen后可以只加IP地址、端口或主机 名,非常灵活。
  2. server_name后可以跟多个主机名称。当开始处理一个http请求时,nginx会取出请求头中的host信息,和每个server_name进行比对,以此来确定由那个server来处理请求。
  3. location会尝试根据用户请求中的URI来匹配上面的/uri表达式,如果可以匹配,就选择location{}块中的配置来处理用户请求。location在匹配的时候有如下规则:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

location = / {
# 只匹配"/".
[ configuration A ]
}
location / {
# 匹配任何请求,因为所有请求都是以"/"开始
# 但是更长字符匹配或者正则表达式匹配会优先匹配
[ configuration B ]
}
location ^~ /images/ {
# 匹配任何以 /images/ 开始的请求,并停止匹配 其它location
[ configuration C ]
}
location ~* .(gif|jpg|jpeg)$ {
# 匹配以 gif, jpg, or jpeg结尾的请求.
# 但是所有 /images/ 目录的请求将由 [Configuration C]处理.
[ configuration D ]
}