当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪以例子说明nginx中alias与root的区别      以实例说明nginx中alias与root用法的区别,有需要的朋友参考下。 1. location ~ ^/awstats/ { root  /home/awstats/; 访问:http://test.com/awstats/ 实际访问的是/home/awstats/awstats/ 2.location ~ ^/awstats/ { alias  /ho.........
    ▪nginx中alias无法解析php的解决办法      nginx中alias无法解析PHP的解决办法,有需要的朋友可以参考下。 配置文件(注意看下面的中文注释):   代码如下: server {   listen       80;   server_name  xxxx.com.cn;   error_log  /tmp/eror.log; .........
    ▪从apache迁移到nginx遇到alias和rewrite的问题      在把网站的主web从apache迁移到nginx上时,遇到了些问题。 1.原来在apache每个二级域名都是用建站点的方式,我打算在nginx里面使用rewrite规则的方式来进行跳转,比如:   代码如下: location / { .........

[1]以例子说明nginx中alias与root的区别
    来源: 互联网  发布时间: 2013-12-24

以实例说明nginx中alias与root用法的区别,有需要的朋友参考下。

1. location ~ ^/awstats/ {
root  /home/awstats/;
访问:http://test.com/awstats/ 实际访问的是/home/awstats/awstats/

2.location ~ ^/awstats/ {
alias  /home/
访问:http://test.com/awstats/ 实际访问的是/home/


    
[2]nginx中alias无法解析php的解决办法
    来源: 互联网  发布时间: 2013-12-24

nginx中alias无法解析PHP的解决办法,有需要的朋友可以参考下。

配置文件(注意看下面的中文注释):
 

代码如下:

server {
  listen       80;
  server_name  xxxx.com.cn;

  error_log  /tmp/eror.log;
  set $www_root /home/web/yqbb/bgskk;

  location / {
      root   $www_root;
      index  index.html index.php;
  }

  location /feedback {
      index  index.php;
      alias /home/web/yqbb/bgskk/app/htdocs;
  }

  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
      root   html;
  }

  location ~ ^/feedback/.+\.php$ {
    root /home/web/yqbb/bgskk/app/htdocs;
    rewrite /feedback/(.*\.php?) /$1 break;
    include fastcgi.conf;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param SCRIPT_FILENAME /home/web/yqbb/bgskk/app/htdocs/$fastcgi_script_name;
  }

  location ~ .*\.(php|php5)?$ {
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi.conf;
  }
}

server
{
  listen 80;  #端口号
  server_name www.;   #域名
  index index.html index.htm index.php index.shtml;  #默认首页
  root  /var/www/html;  #网站根目录
  charset gbk;    #默认编码

  location /public/  #设定要重写的目录名
  {
    alias /var/www/public/; #重定向目的目录。

    #例:如果用户访问http://www./public/test.html 不会访问/var/www/html/public/test.html,而访问的是/var/www/public/test.html,虽然这个文件并没有在域名目录下
  }

#做完上面的设置后,我们发现访问PHP文件http://www./public/test.php时,还是去访问了/var/www/html/public/test.php,也就是说访问php文件没有起到重定向的作用,所以我们还要配置如下这段

#start
  location ~ ^/public/.+\.php$
  {
    root /var/www/html/web/news/public;
    rewrite /public/(.*\.php?) /$1 break;
    include fastcgi.conf;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
  }

#end
location ~ .*\.(php|php5)?$
  {
      #fastcgi_pass  unix:/tmp/php-cgi.sock;
      fastcgi_pass  127.0.0.1:9000;
      fastcgi_index index.php;
      #include fcgi.conf;
      include fastcgi.conf;
      rewrite  ^/([a-zA-Z]+)\/([a-zA-Z]+)$ /$2.shtml last;
  }

  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  {
      expires      30d;  #缓存30天
  }

  location ~ .*\.(js|css)?$
  {
      expires      1h; #缓存1个小时
  }

  access_log  /var/log/oschina.log  access;  #定义日志文件
  ssi on;
  ssi_silent_errors on;
  ssi_types text/shtml;
}


    
[3]从apache迁移到nginx遇到alias和rewrite的问题
    来源: 互联网  发布时间: 2013-12-24

在把网站的主web从apache迁移到nginx上时,遇到了些问题。

1.原来在apache每个二级域名都是用建站点的方式,我打算在nginx里面使用rewrite规则的方式来进行跳转,比如:
 

代码如下:
location /
{
rewrite ^(.*)life.my.com(.*)$ $1www.my.com/lan28/$2 last;
}   

                    
完全没有效果,后来分析,在 location / 里面的rewrite是只能处理hostname之后的内容就是www.my.com/(rewrite),对于hostname是没法进行 rewrite的,那如果要对hostname进行rewrite怎么办呢。目前想到是把rewrite挪到location外面去,不过尝试了下貌似还 是有问题,继续研究中。

2.原来www下面有几个alias,比如访问/wwwroot/www/php/ alias 到/wwwroot/php/ 这样,但是在nginx里面alias的话呢htm、图片等静态文件没问题,但是php问题就来了,由于php是通过正则转发到fastcgi的比如:
 

代码如下:
root  /wwwroot/www;
location /php/
{
alias /wwwroot/php/;
}
location ~ .*\.php?$
{
fastcgi_pass  127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}

这种情况下如果http访问/php/*.php文件实际上是由 location ~ .*\.php?$ 处理的,也就是说php文件根本没没有进行alias还是按照/wwwroot/www/php/的路径访问的。
这个问题如何解决呢,我想到了几个方法:
1)使用symbolic link从系统上把/wwwroot/php/映射到/wwwroot/www/php/
2)修改location ~ .*\.php?$ 的正则,将/php/目录排除,然后在写一个location ~ /php/.*\.php?$ 来处理/php/下面的php文件
3)放弃alias使用rewrite的方式来处理。
三个方法第一个属于回避型,虽然能解决问题但是不符合我的要求。第二个么太复杂,能否实现还是未知。最后我选择了第三个方法就是用rewrite来处理。
略微修改:
 

代码如下:
root  /wwwroot/www;
location ^~ /php/ #这里的关键就是使用“^~”,这样如果是/php/的话就不去匹配下面的php的正则,而全部重定向到php.my.com去,不然的话还是一样的htm正常,php无法访问。
{
rewrite (.*)/php/(.*) http://php.my.com/$2 permanent;
}
location ~ .*\.php?$
{
fastcgi_pass  127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
 

这里的http://php.my.com 对应的就是/wwwroot/www/php/。


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3