先附上一本nginx的书,感谢柳公子的翻译。
nginx的功能在配置文件中配置,查看配置文件地址可以使用nginx命令的-t选项。
配置文件的结构
从左到右是包含关系,从上到下是并列关系。
代理静态资源
在配置文件中创建一个server块(当然在http块内部,不声明端口时默认为80):
server {
location / {
root /data/www;
}
location /images/ {
root /data;
}
}
这段代码产生的代理规则如下:
源请求 | 代理地址 |
---|---|
http://localhost/images/example.png | /data/images/example.png |
http://localhost/some/example.html | /data/www/some/example.html |
可以看出,路径前面的地址会被root代替,从而生成代理地址。
作为代理服务器
在配置文件中创建一个新的server块:
server {
listen 8080;
root /data/up1;
location / {
}
}
端口8080,代理root是/data/up1。
注意,如果location块没有指定root,则默认使用server块的root。
首先修改默认80端口的server块如下:
server {
location / {
proxy_pass http://localhost:8080;
}
location /images/ {
root /data;
}
}
继续修改第二个location块如下:
location ~ \.(gif|jpg|png)$ {
root /data/images;
}
现在默认80端口的server块是这个样子的:
server {
location / {
proxy_pass http://localhost:8080/;
}
location ~ \.(gif|jpg|png)$ {
root /data/images;
}
}
所有图片请求会被代理到/data/images目录,而其他请求则会代理到http://localhost:8080/服务(注意最后有个/)。
作为FastCGI代理
server {
location / {
fastcgi_pass localhost:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
}
location ~ \.(gif|jpg|png)$ {
root /data/images;
}
}
将proxy_pass指定换成fastcgi_pass指令,根据具体的语言替换SCRIPT_FILENAME和QUERY_STRING 。