使用Nginx配置80端口访问不同路径下的文件

很多时候我们会有一个需求:使用一个域名访问同一服务器中不同路径下的文件,这个时候我们需要怎么做呢?这里我们就以静态页面为例,使用Nginx来配置80端口完成这个需求。

简介

首先,简单介绍一下这里为什么需要用Nginx配置80端口来完成这个需求。

我们这里是使用静态页面做例子,在部署时我们就有两种选择,分别是使用NginxApache,这里我为什么选择Nginx而不使用Apache呢?

最简单的原因就是Nginx的优势就是处理静态请求,CPU的占用率低,而Apache更适合处理动态请求。

还有一个问题就是我们为什么要使用80端口而不是使用其他的端口?

1.www.abc.com
2.www.abc.com:8080

第一个使用80端口进行配置在进行访问时我们只需要输入www.abc.com就可以正确的访问到服务器;
第二个则是使用了8080端口那我们在访问的时候就必须使用www.abc.com:8080才能正确的访问到服务器。
我们使用域名访问的目的就是为了方便访问,如果使用其他端口的显然已经不符合我们这个目的了。

80是http协议的默认端口,在你输入域名的时候其实浏览器(非IE)就已经帮你输入协议了
实际上你输入的是www.abc.com其实访问的是www.abc.com:80,只是这个80不需要你输入也不会在地址栏显示

配置

在服务器上安装好Nginx,找到nginx.conf文件打开进行配置,找到下面代码段(忽略了部分代码,只贴上了关键性代码,请以实际文件为准):

    server {
        listen       80;
        server_name  www.abc.com;

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

        location /two {
            alias  /root/wwwroot/two;
            index  index.html index.htm;
        }

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

上述代码中有几处关键如下描述:

listen: 端口号默认80,这里就不需要改了
server_name: 域名,一定要将域名解析到服务器

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

默认访问路径
root: 文件所在路径
index: 首页,根据实际情况更改

配置到这里启动nginx,我们就可以通过域名访问指定路径下的文件了。不过我们的需求并没有完成,这还只是对一个路径下的文件进行访问,如果需要对多个路径下的文件进行访问我们还需要进行如下的配置:

        location /two {
            alias   /root/wwwroot/two;
            index  index.html index.htm;
        }

location /改成location /tworoot改成alias。这里为什么要将root改成alias呢?原因很简单:

使用root会将location后的two追加在路径的尾部,在访问时就会访问到/root/wwwroot/two/two路径下去
将root改成alias则不会将two追加在路径尾部,访问时就为正确路径/root/wwwroot/two

添加这段代码后我们就可以通过www.abc.com/two来访问另一个指定路径下的文件了。

在这段代码中可能有些人就会产生一个疑问,添加多个访问路径一定要将root改成alias吗?不能使用root吗?答案显然是可以使用的,在上面的介绍中讲到了使用root是会将location /后的名称追加在指定路径尾部,理解了rootalias的区别我们很容易就可以解决不修改root的情况下添加多个访问路径,代码如下:

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

这里我们使用root,在浏览器地址栏输入