Nginx常用配置

身为移动开发者,平时使用Nginx并不多,但是和后端联调时,对重定向、转发这些常见的需求,借助Nginx调试起来往往会事半功倍。

准备

此文我们以Mac为参考主机,在Linux上除一些目录不同外,其余操作基本相同。

安装

brew install nginx

安装完成后访问本机8080端口,看到如下界面,则表示安装成功:

常用参数

nginx 启动
nginx -s stop 停止
nginx -s reload 重新启动
nginx -t 检查配置文件语法是否有错误

主要的文件与目录

配置文件

通过brew安装后,nginx的配置文件所在目录为:/usr/local/etc/nginxnginx.conf文件相当于Nginx的入口配置,它会同时加载servers目录下的其它配置。所以当我们需要新增配置时,可以在servers目录下新建一个配置即可。

默认html所在路径

当我们访问本机8080端口时,返回的页面实际就在我们本地,这个是在nginx.conf里配置的:

location / {
     root   html;
     index  index.html index.htm;
}

这里的root所对应的值html是8080端口对应的文件路径。这个html是个相对路径,其完整路径为/usr/local/Cellar/nginx/version/html


常用配置

开启http server

一种常见的需求是将一个目录以http形式对外提供服务,例如上文所说,Nginx默认将html目录映射到8080端口。我们完全可以添加自定义的映射,比如我们将/Users/mine/www目录映射到当前主机的6789端口,在servers目录下新建一个page.conf,最简单的写法如下:

server {
    listen       6789;
    server_name  localhost;
    location / {
            root   /Users/mine/www;
            index  index.html index.htm;
    }
}

端口转发

通常一个主机上会同时开启多个服务,比如我们一个服务对应的是本机的3888端口,我们希望up.saymagic.tech域名来访问时,转发到3888端口的服务,写法如下:

server {
    listen 80;
    server_name up.saymagic.tech;
    location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:38888/;
    }
}

重定向

重定向在做一些调试时特别方便,例如我们将域名blog.saymagic.cn重定向到blog.saymagic.tech,可以这样写配置文件:

server{
    listen 80;
    server_name blog.saymagic.cn;
    rewrite ^/(.*)$ http://blog.saymagic.tech permanent;
}