nginx静态服务器配置

目的:采用nginx做为静态页面服务器.

nginx安装

Ubuntu 下,可以舍去编译安装的过程,直接 apt-get

sudo apt-get install nginx
sudo service nginx start

nginx初始配置

nginx 的默认配置文件位于

/etc/nginx/nginx.conf 在配置文件中有一行:

include /etc/nginx/sites-enabled/*; 这行负责加载外部配置文件,查看sites-enabled目录,该目录下只有一个default文件 这个外部的配置文件就是负责 nginx 的默认代理。这个配置文件的主要内容如下:

server {
        listen      8080;
        server_name localhost;
    location /static {
        root /var/www;
    }
    location /an {            
            include  /etc/nginx/uwsgi_params;
            uwsgi_pass  127.0.0.1:9000; 
            uwsgi_param UWSGI_SCRIPT AnMang.wsgi; 
            uwsgi_param UWSGI_CHDIR /root/Web/AnMang;
        index  index.html index.htm;
            client_max_body_size 600m;
        }
}

参数说明:

server_name:一个大型的网站通常会有很多下属的站点,有各自的服务器提供相应的服务,在 nginx 中可以通过一个叫虚拟主机的概念来将这些不同的服务配置隔离,这就是上面配置中的 server 的含义

举例

google 旗下有翻译和学术两款产品就可以在 nginx 的配置文件中配置两个 serverservername 分别为

translate.google.comscholar.google.com,这样的话不同的 url 请求就会对应到 nginx 相应的设置,转发到不同的后端服务器上

这里的 servername 是和客户端 http 请求中的 host 行进行匹配的 本例中 server_namelocalhost,可以在浏览器通过 localhost 访问到页面的配置。

listen :分别对应了 ipv4 和 ipv6 下的监听端口如果设为 8080,那么就只能通过 localhost:8080 来访问到默认页面了。其中参数default_server的含义是指如果有其他 http 请求的 host 在 nginx 中不存在设置的话那么就用这个 server 的配置来处理。比如去访问 127.0.0.1 那么也会落到这个 server 来处理。

location:每个 url 请求都会对应的一个服务,nginx 进行处理转发或者是本地的一个文件路径,或者是其他服务器的一个服务路径。而这个路径的匹配是通过 location 来进行的。可以将 server 当做对应一个域名进行的配置,而 location 是在一个域名下对更精细的路径进行配置。在这里 location 匹配 / 开始的所有请求,即 localhost 下的 /xxx 或者 /yyy 都要走下面的配置,除了这种简单粗暴的匹配,nginx 也支持正则和完全相等及其他的精细匹配方式。而 tryfiles 意思是 nginx 会按照接下来的顺序去访问文件,将第一个匹配的返回。比如你去请求 localhost/test,他会去寻找 /test 文件,找不到再去找 /test/ 再找不到就返回一个 404。此外还可以在 location 的配置里用 proxypass 实现反向代理和负载均衡,不过这个最简单的配置并没有涉及。

root:是指将本地的一个文件夹作为所有 url 请求的根路径。比如用户请求了一个 localhost/test,那么 nginx 就会去需找 /usr/share/nginx/html 文件夹下的 test 文件返回。

index:就是默认的访问页面了,当访问 localhost 时,他会自动按顺序寻找 root 文件路径下的 index.html 和 index.htm 将第一个找到的结果返回。

此处需要对default文件进行修改,修改root参数配置指向本地静态文件夹,修改如下

  1. 配置生效 执行如下语句,可以不用重启服务让配置生效:

sudo service nginx reload\