nginx静态服务器配置
目的:采用nginx做为静态页面服务器.
1.nginx安装
在 Ubuntu 下,可以舍去编译安装的过程,直接 apt-get
sudo apt-get install nginx
sudo service nginx start
2.nginx初始配置
nginx 的默认配置文件位于
/etc/nginx/nginx.conf
在配置文件中有一行:
include /etc/nginx/sites-enabled/*;
这行负责加载外部配置文件,查看sites-enabled目录,该目录下只有一个default文件,这个外部的配置文件就是负责我们 nginx 的默认代理。这个配置文件的主要内容如下:
server {
server_name localhost;
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
参数说明:
server_name:一个大型的网站通常会有很多下属的站点,有各自的服务器提供相应的服务,在 nginx 中我们可以通过一个叫虚拟主机的概念来将这些不同的服务配置隔离,这就是上面配置中的 server 的含义。举例来说 google 旗下有翻译和学术两款产品我们就可以在 nginx 的配置文件中配置两个 server,servername 分别为 translate.google.com 和 scholar.google.com,这样的话不同的 url 请求就会对应到 nginx 相应的设置,转发到不同的后端服务器上。这里的 servername 是和客户端 http 请求中的 host 行进行匹配的。本例中 server_name 为 localhost,这就是为什么我们可以在浏览器通过 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参数配置指向本地静态文件夹,修改如下
3.配置生效
执行如下语句,可以不用重启服务让配置生效:
下面的很重要,之前就是这个搞了两个小时!!!!!!
sudo service nginx reload
今天看一个项目需要配置Nginx的nginx.conf,但是只要添加配置之后就报错,不知道是不是使用homestead的原因,最后还是按照配置文件中的include配置在sites-enabled文件里就好了!
参考:链接