全球主机交流论坛

标题: nginx静态规则这样添加为何不行,该如何改 [打印本页]

作者: mojave    时间: 2009-10-12 20:16
标题: nginx静态规则这样添加为何不行,该如何改
server
        {
                listen  80;
                server_name  host1.moltown.com;

                location / {
                        stub_status on;
                        access_log   off;
                                 }

location / {
            rewrite ^/archiver/((fid|tid)-[\w\-]+\.html)$ /archiver/index.php?$1 last;
            rewrite ^/forum-([0-9]+)-([0-9]+)\.html$ /forumdisplay.php?fid=$1&page=$2 last;
            rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
            rewrite ^/space-(username|uid)-(.+)\.html$ /space.php?$1=$2 last;
            rewrite ^/tag-(.+)\.html$ /tag.php?name=$1 last;
            break;
        }


if ($host != 'moltown.com/my' ) {
        rewrite  ^/(.*)$  http://moltown.com/my/$1  permanent;
  }
  
        rewrite ^/(post|record|sort|author|page)-([0-9]+)\.html$ /index.php?$1=$2;
        rewrite ^/tag-(.+)\.html$ /index.php?tag=$1;
            }

     }

测试出现[emerg]: duplicate location "/" in /usr/local/nginx/conf/nginx.conf:103
configuration file /usr/local/nginx/conf/nginx.conf test failed
我看别人都这样插入静态规则的...怎么就不能重复呢
作者: mojave    时间: 2009-10-12 20:42
严重求救
作者: cpuer    时间: 2009-10-12 21:09
标题: 回复 2# 的帖子
我看下,稍等
作者: cpuer    时间: 2009-10-12 21:17
标题: 回复 1# 的帖子
把  location / {
                        stub_status on;
                        access_log   off;
                                 }

这段删除掉。或者注释掉

#location / {
                        #stub_status on;
                        #access_log   off;
                                # }
作者: zyypp    时间: 2009-10-12 21:23
标题: 回复 1# 的帖子
你怎么 2个 location / 啊 重复了 人才啊
作者: mojave    时间: 2009-10-12 21:26
标题: 回复 4# 的帖子
我不知道注释掉会不会出现错误,没敢动 现在就改
作者: cpuer    时间: 2009-10-12 21:29
标题: 回复 6# 的帖子
注销了就好了,不然就会提示重复出错的。

而且你这个是做站的,就不能放stub_status on 了。
作者: zyypp    时间: 2009-10-12 22:00
你可以把 status 定义成为一个 虚拟目录
作者: mojave    时间: 2009-10-12 22:01
标题: 回复 7# 的帖子
还是不行,注释了测试没有语法错误了,但是 kill -HUP `cat /usr/local/nginx/logs/nginx.pid`之后,依然无法静态....怪事,是不是没有在编译时候加入准许rewrite的参数....
作者: cpuer    时间: 2009-10-12 22:07
标题: 回复 9# 的帖子
host1.moltown.com  没有discuz论坛呀

server_name  host1.moltown.com; 绑定的是这个域名。
作者: mojave    时间: 2009-10-12 22:11
绑定的是,但是C大当时不说随便绑定个域名么,host1.moltown.com是我申请时候绑定VPS的....
作者: cpuer    时间: 2009-10-12 22:19
标题: 回复 11# 的帖子
绑定你要用的域名啦
作者: mojave    时间: 2009-10-12 22:22
标题: 回复 12# 的帖子
那我ticket给客服看能不能改
作者: cpuer    时间: 2009-10-12 22:24
标题: 回复 13# 的帖子
你不要管主机里面的hostname ,那个不用理它。

你只要改nginx.conf 里面的server_name 就行了,server_name 是对应绑定的域名。

然后规则放在这个server段里面。
作者: mojave    时间: 2009-10-12 22:33
标题: 回复 14# 的帖子
看来多此一举..... 幸好还没ticket
作者: zyypp    时间: 2009-10-12 22:39
把你的那个 改了下 中间的红色的 为你的rewrite 我不知道 对不 所以 也没改
总体 就是这个结构了

server
{
   listen  80;
   server_name  要绑定的域名;
   root  网站目录的绝对路径;

location / {
   rewrite ^/archiver/((fid|tid)-[\w\-]+\.html)$ /archiver/index.php?$1 last;
   rewrite ^/forum-([0-9]+)-([0-9]+)\.html$ /forumdisplay.php?fid=$1&page=$2 last;
   rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
   rewrite ^/space-(username|uid)-(.+)\.html$ /space.php?$1=$2 last;
   rewrite ^/tag-(.+)\.html$ /tag.php?name=$1 last;
   break;
   if ($host != 'moltown.com/my' ) {
      rewrite  ^/(.*)$  http://moltown.com/my/$1  permanent;
   }
   rewrite ^/(post|record|sort|author|page)-([0-9]+)\.html$ /index.php?$1=$2;
   rewrite ^/tag-(.+)\.html$ /index.php?tag=$1;

}

location /status {
   stub_status on;
   access_log   off;
}
}
作者: mojave    时间: 2009-10-12 22:46
标题: 回复 16# 的帖子
测试下
unexpected end of file, expecting "}" in /usr/local/nginx/conf/nginx.conf:117
configuration file /usr/local/nginx/conf/nginx.conf test failed
说的117也就是最后一行的}
作者: zyypp    时间: 2009-10-12 22:51
你自己自己看下 这两个符号 {  }  是不是有多余的  这个 大括号 要相对应 不能多 和 少
作者: mojave    时间: 2009-10-12 22:55
标题: 回复 18# 的帖子
肯定是匹配的才行,今天我改的时候也碰到N次这个问题,我以为小学数学没学好,但是确实是匹配的....
作者: zyypp    时间: 2009-10-12 23:02
你把 配置 贴上来 过着 pm过来
作者: cpuer    时间: 2009-10-12 23:05
标题: 回复 20# 的帖子
嗯,整个贴出来好看些。
作者: mojave    时间: 2009-10-12 23:13
标题: 回复 20# 的帖子
user  www www;

worker_processes 1;

error_log  /home/logs/nginx_error.log  crit;

pid        /usr/local/nginx/logs/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;

events
        {
                use epoll;
                worker_connections 51200;
        }

http
        {
                include       mime.types;
                default_type  application/octet-stream;

                #charse  gb2312;

                server_names_hash_bucket_size 128;
                client_header_buffer_size 32k;
                large_client_header_buffers 4 32k;
                client_max_body_size 8m;

                sendfile on;
                tcp_nopush     on;

                keepalive_timeout 60;

                tcp_nodelay on;

                fastcgi_connect_timeout 300;
                fastcgi_send_timeout 300;
                fastcgi_read_timeout 300;
                fastcgi_buffer_size 64k;
                fastcgi_buffers 4 64k;
                fastcgi_busy_buffers_size 128k;
                fastcgi_temp_file_write_size 128k;

                gzip on;
                gzip_min_length  1k;
                gzip_buffers     4 16k;
                gzip_http_version 1.0;
                gzip_comp_level 2;
                gzip_types       text/plain application/x-javascript text/css application/xml;
                gzip_vary on;

                #limit_zone  crawler  $binary_remote_addr  10m;

server
        {
                listen       80;
                server_name moltown.com;
                index index.html index.htm index.php;
                root  /home/www;

                #limit_conn   crawler  20;

                #location /status {
                #stub_status        on;
                #access_log        off;
                #}

                location ~ .*\.(php|php5)?$
                        {
                                fastcgi_pass  unix:/tmp/php-cgi.sock;
                                #fastcgi_pass  127.0.0.1:9000;
                                fastcgi_index index.php;
                                include fcgi.conf;
                        }

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

                location ~ .*\.(js|css)?$
                        {
                                expires      12h;
                        }

                log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
             '$status $body_bytes_sent "$http_referer" '
             '"$http_user_agent" $http_x_forwarded_for';
                access_log  /home/logs/access.log  access;
        }

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

#                location / {
#                        stub_status on;
#                        access_log   off;
#                                 }

location / {
            rewrite ^/archiver/((fid|tid)-[\w\-]+\.html)$ /archiver/index.php?$1 last;
            rewrite ^/forum-([0-9]+)-([0-9]+)\.html$ /forumdisplay.php?fid=$1&page=$2 last;
            rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
            rewrite ^/space-(username|uid)-(.+)\.html$ /space.php?$1=$2 last;
            rewrite ^/tag-(.+)\.html$ /tag.php?name=$1 last;
            break;
        }


if ($host != 'moltown.com/my' ) {
        rewrite  ^/(.*)$  http://moltown.com/my/$1  permanent;
  }
  
        rewrite ^/(post|record|sort|author|page)-([0-9]+)\.html$ /index.php?$1=$2;
        rewrite ^/tag-(.+)\.html$ /index.php?tag=$1;
        }
}

作者: mojave    时间: 2009-10-12 23:14
标题: 回复 21# 的帖子
贴了
作者: cpuer    时间: 2009-10-12 23:24
标题: 回复 23# 的帖子
第二段server缺了好多东西,你要把www.moltown.com绑定在哪个目录都没有设置,你是要绑定到bbs目录的话,我给你写下,

把你上面的第二个server段替换成

server
        {
                listen       80;
                server_name www.moltown.com;
                index index.html index.htm index.php;
                root  /home/www/bbs;

                #limit_conn   crawler  20;

                #location /status {
                #stub_status        on;
                #access_log        off;
                #}

location / {
            rewrite ^/archiver/((fid|tid)-[\w\-]+\.html)$ /archiver/index.php?$1 last;
            rewrite ^/forum-([0-9]+)-([0-9]+)\.html$ /forumdisplay.php?fid=$1&page=$2 last;
            rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
            rewrite ^/space-(username|uid)-(.+)\.html$ /space.php?$1=$2 last;
            rewrite ^/tag-(.+)\.html$ /tag.php?name=$1 last;
            break;
        }

                location ~ .*\.(php|php5)?$
                        {
                                fastcgi_pass  unix:/tmp/php-cgi.sock;
                                #fastcgi_pass  127.0.0.1:9000;
                                fastcgi_index index.php;
                                include fcgi.conf;
                        }

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

                location ~ .*\.(js|css)?$
                        {
                                expires      12h;
                        }

                log_format  access2  '$remote_addr - $remote_user [$time_local] "$request" '
             '$status $body_bytes_sent "$http_referer" '
             '"$http_user_agent" $http_x_forwarded_for';
                access_log  /home/logs/access.log  access;
        }

这样就OK了
作者: zyypp    时间: 2009-10-12 23:28
第二段 的 # 号 错了 你用成 全拼了 应该是 #
其他的 我正在 看
作者: zyypp    时间: 2009-10-12 23:29
第二段 缺日志 和 主目录
作者: zyypp    时间: 2009-10-12 23:29
额 C大 比我动作快 嘿嘿
作者: mojave    时间: 2009-10-12 23:33
标题: 回复 24# 的帖子
[emerg]: unknown log format "access" in /usr/local/nginx/conf/nginx.conf:99
configuration file /usr/local/nginx/conf/nginx.conf test failed
我觉得下面这里没变动
作者: zyypp    时间: 2009-10-12 23:36
你把 你的 两个主目录 和 对应的 两个域名 还有两个日志保存位置 和 文件名 写出来
作者: mojave    时间: 2009-10-12 23:41
标题: 回复 29# 的帖子
/home/www/bbs    moltown.com/bbs
/home/www/my     moltown.com/my
日志是公用的吧/home/logs/access.log
作者: zyypp    时间: 2009-10-12 23:43
你第二段 就是 多了一个 }
作者: cpuer    时间: 2009-10-12 23:45
标题: 回复 30# 的帖子
moltown.com/bbs和moltown.com/my可不是域名哦,你只要/home/www/绑定域名moltown.com就行了哈,后面的server段都可以删除掉,第一个server段写成

server
        {
                listen       80;
                server_name www.moltown.com moltown.com;
                index index.html index.htm index.php;
                root  /home/www;

                #limit_conn   crawler  20;

                #location /status {
                #stub_status        on;
                #access_log        off;
                #}

location /bbs {
            rewrite ^/archiver/((fid|tid)-[\w\-]+\.html)$ /archiver/index.php?$1 last;
            rewrite ^/forum-([0-9]+)-([0-9]+)\.html$ /forumdisplay.php?fid=$1&page=$2 last;
            rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
            rewrite ^/space-(username|uid)-(.+)\.html$ /space.php?$1=$2 last;
            rewrite ^/tag-(.+)\.html$ /tag.php?name=$1 last;
            break;
        }

                location ~ .*\.(php|php5)?$
                        {
                                fastcgi_pass  unix:/tmp/php-cgi.sock;
                                #fastcgi_pass  127.0.0.1:9000;
                                fastcgi_index index.php;
                                include fcgi.conf;
                        }

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

                location ~ .*\.(js|css)?$
                        {
                                expires      12h;
                        }

                log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
             '$status $body_bytes_sent "$http_referer" '
             '"$http_user_agent" $http_x_forwarded_for';
                access_log  /home/logs/access.log  access;
        }

然后后面的server段都可以删除了。
作者: zyypp    时间: 2009-10-12 23:45
原帖由 mojave 于 2009-10-12 23:41 发表
/home/www/bbs    moltown.com/bbs
/home/www/my     moltown.com/my
日志是公用的吧/home/logs/access.log



server 放的是 域名
你要是 要 一个域名 后面 跟 目录的  bbs  和 my 的话 那就只用一个 server端了
作者: zyypp    时间: 2009-10-12 23:48
user  www www;

worker_processes 1;

error_log  /home/logs/nginx_error.log  crit;

pid        /usr/local/nginx/logs/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;

events
{
  use epoll;
  worker_connections 51200;
}

http
{
  include       mime.types;
  default_type  application/octet-stream;

  #charset  gb2312;

  server_names_hash_bucket_size 128;
  client_header_buffer_size 32k;
  large_client_header_buffers 4 32k;
  client_max_body_size 8m;

  sendfile on;
  tcp_nopush     on;

  keepalive_timeout 60;

  tcp_nodelay on;

  fastcgi_connect_timeout 300;
  fastcgi_send_timeout 300;
  fastcgi_read_timeout 300;
  fastcgi_buffer_size 64k;
  fastcgi_buffers 4 64k;
  fastcgi_busy_buffers_size 128k;
  fastcgi_temp_file_write_size 128k;
fastcgi_intercept_errors on;

  gzip on;
  gzip_min_length  1k;
  gzip_buffers     4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_types       text/plain application/x-javascript text/css application/xml;
  gzip_vary on;

  #limit_zone  crawler  $binary_remote_addr  10m;

  server
  {
    listen       80;
    server_name  moltown.com;
    index index.html index.htm index.php;
    root  /home/www;

location /bbs {
            rewrite ^/archiver/((fid|tid)-[\w\-]+\.html)$ /archiver/index.php?$1 last;
            rewrite ^/forum-([0-9]+)-([0-9]+)\.html$ /forumdisplay.php?fid=$1&page=$2 last;
            rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
            rewrite ^/space-(username|uid)-(.+)\.html$ /space.php?$1=$2 last;
            rewrite ^/tag-(.+)\.html$ /tag.php?name=$1 last;
            break;
}

location /my {
if ($host != 'moltown.com/my' ) {
        rewrite  ^/(.*)$  http://moltown.com/my/$1  permanent;
  }
        rewrite ^/(post|record|sort|author|page)-([0-9]+)\.html$ /index.php?$1=$2;
        rewrite ^/tag-(.+)\.html$ /index.php?tag=$1;
}

    location ~ .*\.(php|php5)?$
    {      
      fastcgi_pass  unix:/tmp/php-cgi.sock;
      fastcgi_index index.php;
      include fcgi.conf;
    }
   
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv)$
    {
      expires      30d;
    }

    location ~ .*\.(js|css)?$
    {
      expires      12h;
    }   

    log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
               '$status $body_bytes_sent "$http_referer" '
               '"$http_user_agent" $http_x_forwarded_for';
    access_log  /home/logs/access.log  access;
  }
}

作者: cpuer    时间: 2009-10-12 23:49
标题: 回复 34# 的帖子
一直没弄明白 里面的

        rewrite ^/(post|record|sort|author|page)-([0-9]+)\.html$ /index.php?$1=$2;
        rewrite ^/tag-(.+)\.html$ /index.php?tag=$1;

这段是用来干啥的?
作者: zyypp    时间: 2009-10-12 23:52
应该是 一个 blog 的 rewrite 规则吧 呵呵
作者: cpuer    时间: 2009-10-12 23:53
标题: 回复 36# 的帖子
哦了,楼主去试试吧
作者: zyypp    时间: 2009-10-12 23:57
对了 楼主 哪些 rewrite 你最好 自己 重新 写下 我不知道 给你放的 对不对
作者: cpuer    时间: 2009-10-12 23:58
标题: 回复 38# 的帖子
discuz那个是对的,其他未知。
作者: zyypp    时间: 2009-10-13 00:01
标题: 回复 39# 的帖子
哦 呵呵
作者: mojave    时间: 2009-10-13 00:01
标题: 回复 36# 的帖子
你太聪明了...其实我就是被这个blog重写规则牵制太多....
作者: mojave    时间: 2009-10-13 00:03
标题: 回复 39# 的帖子
经过我测试,BLOG那段依然傲然挺立,完全通过测试,就是还是404错误,,,,,不能静态,重启的kill  -HUP也使用过了...
作者: zyypp    时间: 2009-10-13 00:05
标题: 回复 41# 的帖子
emlog 的 rewrite 你搜搜看 有没有 或者去官方论坛 问问去 呵呵
作者: mojave    时间: 2009-10-13 00:05
标题: 回复 32# 的帖子
二位指点,学习很多,现在觉得问题本身倒是不重要了^_^
作者: zyypp    时间: 2009-10-13 00:06
标题: 回复 44# 的帖子
(⊙o⊙)…
作者: mojave    时间: 2009-10-13 00:07
标题: 回复 43# 的帖子
emlog的rewrite是对的啊,我屡试不爽,就是DZ测试通过,还装死,不过我用的是DZ7.1,还没出正式版
作者: zyypp    时间: 2009-10-13 00:08
dz 的 问 C大 他用的有
作者: cpuer    时间: 2009-10-13 00:09
标题: 回复 46# 的帖子
搞个试验 你把博客那段伪静态规则删除掉,然后重新加载下nginx.conf 看下你的博客伪静态是否还成功
作者: cpuer    时间: 2009-10-13 00:11
原帖由 zyypp 于 2009-10-13 00:08 发表
dz 的 问 C大 他用的有


我给的32楼的,完全正确的,应该没问题的。
作者: zyypp    时间: 2009-10-13 00:14
标题: 回复 49# 的帖子
慢玩啊 我去捣鼓 我的 vps去了
然后 (~ o ~)~zZ 去 嘿嘿

作者: mojave    时间: 2009-10-13 00:16
worker_processes 1;

error_log  /home/logs/nginx_error.log  crit;

pid        /usr/local/nginx/logs/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;

events
        {
                use epoll;
                worker_connections 51200;
        }

http
        {
                include       mime.types;
                default_type  application/octet-stream;

                #charse  gb2312;

                server_names_hash_bucket_size 128;
                client_header_buffer_size 32k;
                large_client_header_buffers 4 32k;
                client_max_body_size 8m;

                sendfile on;
                tcp_nopush     on;

                keepalive_timeout 60;

                tcp_nodelay on;

                fastcgi_connect_timeout 300;
                fastcgi_send_timeout 300;
                fastcgi_read_timeout 300;
                fastcgi_buffer_size 64k;
                fastcgi_buffers 4 64k;
                fastcgi_busy_buffers_size 128k;
                fastcgi_temp_file_write_size 128k;

                gzip on;
                gzip_min_length  1k;
                gzip_buffers     4 16k;
                gzip_http_version 1.0;
                gzip_comp_level 2;
                gzip_types       text/plain application/x-javascript text/css application/xml;
                gzip_vary on;

                #limit_zone  crawler  $binary_remote_addr  10m;

server
        {
                listen       80;
                server_name www.moltown.com moltown.com;
                index index.html index.htm index.php;
                root  /home/www;

                #limit_conn   crawler  20;

                #location /status {
                #stub_status        on;
                #access_log        off;
                #}

location /bbs {
            rewrite ^/archiver/((fid|tid)-[\w\-]+\.html)$ /archiver/index.php?$1 last;
            rewrite ^/forum-([0-9]+)-([0-9]+)\.html$ /forumdisplay.php?fid=$1&page=$2 last;
            rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
            rewrite ^/space-(username|uid)-(.+)\.html$ /space.php?$1=$2 last;
            rewrite ^/tag-(.+)\.html$ /tag.php?name=$1 last;
            break;
        }

                location ~ .*\.(php|php5)?$
                        {
                                fastcgi_pass  unix:/tmp/php-cgi.sock;
                                #fastcgi_pass  127.0.0.1:9000;
                                fastcgi_index index.php;
                                include fcgi.conf;
                        }

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

                location ~ .*\.(js|css)?$
                        {
                                expires      12h;
                        }

                log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
             '$status $body_bytes_sent "$http_referer" '
             '"$http_user_agent" $http_x_forwarded_for';
                access_log  /home/logs/access.log  access;

        }
}

如上,去掉emlog那个rewrite,测试通过,kill -HUP `cat /usr/local/nginx/logs/nginx.pid`之后依然打不开....绝望了...看来是DZ7.1的原因
作者: cpuer    时间: 2009-10-13 00:22
标题: 回复 51# 的帖子
可能是discuz 7.1的伪静态规则跟6.0不一样了吧。
作者: mojave    时间: 2009-10-13 00:25
标题: 回复 52# 的帖子
法科DZ,不过还是再次感谢,受教了
作者: cpuer    时间: 2009-10-13 00:27
标题: 回复 53# 的帖子





欢迎光临 全球主机交流论坛 (https://ddzzz.eu.org/) Powered by Discuz! X3.4