nginx配置虚拟目录

配置awstats,awstats创建出的文件目录在/home/awstats下,在nginx中加入配置后狂报404,发现还是忽略了root和alias的区别,特将修改配置记录如下:

  1. 失败:
server {
        server_name  test.com;
        charset utf-8,GB2312;
        index  index.html;
 
        location / {
        root html;
        access_log logs/access.log main;
         }
        location ~ ^/awstats/ {
        root  /home/awstats/;
        index  index.html;
        access_log off;
        error_log off;
        charset gb2312;
     }

2. 失败:

      server {
        server_name  test.com;
        charset utf-8,GB2312;
        index  index.html;
 
        location / {
        root html;
        access_log logs/access.log main;
         }
        location ~ ^/awstats/ {
        alias  /home/;
        index  index.html;
        access_log off;
        error_log off;
        charset gb2312;
               }

3.成功:

       server {
        server_name  test.com;
        charset utf-8,GB2312;
        index  index.html;
 
        location / {
        root html;
        access_log logs/access.log main;
         }
        location ~ ^/awstats/ {
        alias  /home/awstats/;
        index  index.html;
        access_log off;
        error_log off;
        charset gb2312;
                }

4.成功: 

      server {
        server_name  test.com;
        charset utf-8,GB2312;
        index  index.html;
         location / {
        root html;
        access_log logs/access.log main;
         }
        location ~ ^/awstats/ {
        root  /home/;
        index  index.html;
        access_log off;
        error_log off;
        charset gb2312;
               }

从以上例子很明显看出,还是对root和alias的概念搞混了~

1.      location ~ ^/awstats/ {

        root  /home/awstats/;

访问:http://test.com/awstats/ 实际访问的是/home/awstats/awstats/

2.      location ~ ^/awstats/ {

        alias  /home/

访问:http://test.com/awstats/ 实际访问的是/home/

3.      location ~ ^/awstats/ {                        #使用alias时目录名后面一定要加“/”

        alias  /home/awstats/;

访问:http://test.com/awstats/ 实际访问的是/home/awstats/

4.      location ~ ^/awstats/ {

        root  /home/;

访问:http://test.com/awstats/ 实际访问的是/home/awstats/

借用ayou老师的一句话:

一般情况下,在location /中配置root,在location /other中配置alias是一个好习惯

====================================================================

我的需求是这样的,系统有一个专门的文件夹用于存放图片,css,js或者附件,如:

http://www.test.com/resources/images/a.jpg

http://www.test.com/resources/css/a.css

http://www.test.com/resources/js/a.js

http://www.test.com/resources/attach/a.doc

这样的配置对于apache来说那相当容易,

需要通过location uri规则匹配访问到该文件夹,我使用如下配置:

location ^~ /resources/ {

    root d:/www/;

}

试了N多次都能访问不到,一直报404,无比杯具!最后拜读了上面提供的blog才解决,发现跟原博主一样,没有真正搞清楚,location中root和alias的区别,最后修改成:

location ^~ /resources/ {

    alias d:/www/;

}

成功实现了我的需求。

原贴如下:

niginx 似乎没有虚拟目录的说法,但是可以指定请求路径时nginx访问的路径,也算是一个解决办法。

server {
listen       80 default;
server_name  _;

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

location ~ //.ht {
deny  all;
}

    location /phpadmin/ {
alias   /opt/www/phpadmin/;
index   index.php;
}
location ~ /.php$ {
include httpd.conf;
}
}

要注意的是, location /phpadmin/ {} 和 location /phpadmin {} 是完全不同的。

前者可以访问到目录,而后者将被重定向到服务器,如: http://127.0.0.1/phpadmin ,将被重定向到 http://_/phpadmin

下面这个配置和上面基本类似,唯一的不同是,所有对 /phpadmin/的访问将正确解析,而其他访问则返回页面不存在(404)的信息。

server {
listen       80 default;
server_name  _;

location / {
root   html;
#index  403.html;

return 404;
}

location ~ //.ht {
deny  all;
}

    location /phpadmin/ {
alias   /opt/www/phpadmin/;
index   index.php;
}
location ~ /.php$ {
include httpd.conf;
}
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Nginx虚拟目录alias和root目录

    nginx是通过alias设置虚拟目录,在nginx的配置中,alias目录和root目录是有区别的: 1)alias指定的目录是准确的,即location匹配...

    洗尽了浮华
  • Nginx配置虚拟主机

    server { listen 80; server_name 0377joyous.com;#域名,可以用空格分开 index index.html i...

    苦咖啡
  • Nginx虚拟主机配置

    虚拟主机就是使用特殊的软硬件技术,把一台计算机主机分成多台“虚拟”的主机,每一台虚拟主机都具有独立的域名和IP地址(或共享的IP地址),具有完整的Intern...

    令仔很忙
  • nginx虚拟主机配置

    虚拟主机的概念 虚拟主机,就是把一台物理服务器划分成多个“虚拟”的服务器,每一个虚拟主机都可以有独立的域名和独立的目录 nginx虚拟主机的配置 nginx的虚...

    dys
  • Nginx中虚拟主机配置

    1、修改宿主机的hosts文件(系统盘/windows/system32/driver/etc/HOSTS)

    HUC思梦
  • Tomcat设置虚拟目录

    在tomcat文件夹的conf\catalina\localhost(对于Tomcat6版本及其以上,需要自己创建catalina和localhost这两个文件...

    WindCoder
  • CentOS7.2与Nginx配置虚拟主机

    centos安装nginx的文章在前期有发过。。。这里就不再详解,不懂可以查找资料的

    php007
  • Tomcat配置虚拟目录并发布web应用

    兮动人
  • Nginx(二)-- 配置文件之虚拟主机配置

    1) 在nginx/conf/nginx.conf文件中的http段中添加一个server,如下所示:

    码农小胖哥
  • nginx配置下载目录

    很多场景下,我们需要对用户提供文件下载功能,比如不同版本的软件列表,或者对外提供的一些公开的报表下载。

    后端技术探索
  • nginx 配置目录转发

    server { listen 80; autoindex off; server_name image.imooc.com; ...

    Dar_Alpha
  • nginx常用配置目录

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    Jerry Wang
  • linux 配置FTP多个虚拟用户,私人目录+共享目录

    需求:公司多个部门,行政,财务,人事,运营,每个部门都能上传下载文件,pub目录是共享目录,每个部门都可以上传下载,但是无法删除。每个部门都可以在本部门目录,上...

    用户4877748
  • nginx服务器配置虚拟主机

    对于虚拟主机的配置可以在nginx.conf里面配置或者vhosts.conf下,由于vhost.conf便于管理我们在这个文件夹下进行配置虚拟主机

    十月梦想
  • Nginx配置基于端口号配置虚拟主机

    server 块中完成虚拟主机的设置,listen 命令监昕端口。 因此,若要在 Nginx 中配置一个虚拟主机,只需在 http 块中添加一个 server...

    兮动人
  • [javaEE] web应用的目录结构&配置虚拟主机

    |--web.xml 整个web的配置文件,配置主页,Servlet的映射,过滤器,监听器的配置

    陶士涵
  • Nginx控制语句与虚拟机配置

    这里就不讲解如何安装Nginx服务了,我这里使用的是lnmp一键安装包。直接网上百度一个即可使用。今天主要讲解一个如何使用基本控制语句与虚拟配置。

    A梦多啦A
  • 配置虚拟机

    到这里,添加好iso文件,这个可以从百度上搜索下载。接着就准备开始运行虚拟机就行了。

    可爱见见
  • 给小白的Nginx入门指南-30分钟从小白到专家

    h以前写过一些Nginx的文章,但都是用到什么说什么,没有一个完整系统的总结。趁最近有时间,打算将Nginx相关的内容重新整理一下。

    架构师精进

扫码关注云+社区

领取腾讯云代金券