# Nginx 快速入门
配置
默认情况下,nginx.conf 被放置在目录 /usr/local/nginx/conf, /etc/nginx or /usr/local/etc/nginx
命令
启动命令:
安装主目录的./sbin/nginx 或 nginx
nginx启动之后 一般使用如下命令语法来控制nginx服务:
nginx -s signal
signal 有下面几种:
- stop — 快速关闭
- quit — 优雅地关闭,会把当前处理的请求处理完后再退出服务
- reload — 重新加载配置文件,会检查语法,然后启动新的worker进程和通知旧的worker进程关闭,旧的进程会优雅的关闭
- reopen — 重新打开日志文件
配置文件语法
静态内容
Web 服务器的一个重要的任务就是文件服务(例如图片和静态HTML网页)
将 nginx.conf 中的http相关内容注释掉,然后添加配置 server 区块
http {
server {}
}
一般情况下,一个配置文件可能包括了几个 server 区块,只是端口或者服务名不同
在 server 区块中添加 location 区块,如下:
location / {
root /data/www;
}
使用了 root 指令,匹配前缀 /,URI后面的会添加到 /data/www,也就是当请求 GET /index.html ,就会返回文件 /data/www/index.html
然后添加另一个 location 区块:
location /images/ {
root /data;
}
它将会匹配请求中开始于 /images/ 的URL(也会匹配到 location /,但是会使用匹配最长的那个location)。
最后配置文件像这样:
http {
server {
location / {
root /data/www;
}
location /images/ {
root /data;
}
}
}
应用于这个配置的服务默认端口是80,所以可以使用 http://localhost/ 来访问。当请求URI起始于/images/ 服务将返回服务器上 /data/images目录上面的文件,如果没有找到就返回404错误。例如,当请求http://localhost/images/examp... ,服务将会发送文件 /data/images/example.png 。同样的,当请求 http://localhost/some/example... 将返回文件 /data/www/some/example.html
简单代理服务
nginx一个比较常用的功能是作为代理服务器。我们将使用两个server配置来讲解,这两个server配置在同一个nginx实例中。
首先定义一个被代理的服务:
server {
listen 8080;
root /data/up1;
location / {
}
}
这个服务将监听8080端口(之前 listen 指令没有指定,默认会使用80端口)。创建 /data/up1目录,并在该目录下创建一个index.html。这个服务直接代理/data/up1目录下的静态内容。注意到root指令被放置在server上下文中,当location没有指定root时候会使用,否则使用 location内的。
接下来,我们定义代理服务:
server {
location / {
proxy_pass http://localhost:8080;
}
location /images/ {
root /data;
}
}
第一个location区块中,proxy_pass指令指定了被代理的服务,这里是http://localhost:8080。我们将修改第二个location区块,即前缀/images/的location,如下:
location ~ \.(gif|jpg|png)$ {
root /data/images;
}
这是一个匹配所有URI中以.gif,.jpg 或者 .png 结尾的正则表达式。正则表达式应以〜开头。所有匹配的请求会被映射到 /data/images 目录。
最后配置文件会像这样:
server {
location / {
proxy_pass http://localhost:8080/;
}
location ~ \.(gif|jpg|png)$ {
root /data/images;
}
}
这个服务将会将以.gif,.jpg 或者 .png直接映射到 /data/images目录,其他的所有请求交给被代理的服务,这里是http://localhost:8080。
完整配置:
events {
worker_connections 1024;
}
http {
server {
listen 8080;
root /data/www;
location / {
}
}
server {
location / {
proxy_pass http://localhost:8080;
}
location ~ \.(jpg|png|gif)$ {
root /data/images;
}
}
}
向nginx服务发送 reload 信号重新加载配置,即nginx -s reload。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。