免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 13737 | 回复: 21
打印 上一主题 下一主题

[Web] apache转换到了nginx的几个注意点 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-09 08:50 |只看该作者 |倒序浏览
【from】www.mlives.cn
最近把整站从apache升级到了nginx,客户的站点大概有30台服务器大部分架构位tomcat+apache,只有一个php页面
一下是我升级遇到的几个问题的注意点

1.
当我们去访问服务器上的一个目录时候,他不会自动加上一个/ ,浏览器会给出改页无法打开的错误,这个时候浏览器去取的地址实际上是upstream中所写的地址和端口或如果没有使用upstream时 当使用localhost做servername时候 浏览器会去访问http://127.0.0.1/dir
解决办法
在每个虚拟主机的server定义中加上
if (-d $request_filename) {
                           rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
                }
注意 root字段的定义也一定要出现在server中 如果server中没有定义root 错误还将存在
例子:
server {
                listen                800;
                server_name www.1.com;
                root   /opt/1-index;   //这边定义了 就会在目录访问的时候加上/  如果这边没有定义这个 上面的url重写依然不会生效
                include                vhost/alias.conf;
                include                vhost/proxy.conf;
                if (-d $request_filename) {
                           rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
                }
                error_page   405 =200 @405;
                location @405 {
                proxy_pass      http://PROXY_STATIC;
                }
                location / {
                        root   /opt/1-index;        //只在这边定义是没有用的,这边甚至可以不做定义
                        rewrite ^/(\d+)\.home$ /index.html?userId=$1 last;
                        index  index.html index.htm;
                }                       

2.url重写的注意事项:
原有的url支持正则  重写的url不支持正则
rewrite ^/(\d+)\.home$ /index.html?userId=$1 last;
这个重写中 ^/(\d+)\.home$ 这部分支持正则
而/index.html?userId=$1
不要用正则 也不匹配正则 /index.html?*userId=$1 这样他就会去找.html?*userId=$1这个url 然后给你个404 not found

3.post方式去访问静态文件
Apache、IIS、Nginx等绝大多数web服务器,都不允许静态文件响应POST请求,否则会返回“HTTP/1.1 405 Method not allowed”错误。(但是之前程序在apache上跑 没问题)
如果有这个需求呢 就要做如下配置了
error_page   405 =200 @405;
                location @405 {
                proxy_pass      http://PROXY_STATIC;
        #        root /usr/local/nginx/html;
                }
把所有405错误重定向成200 然后吧所有405错误的请求全部交给一个代理去执行
或者写上本地路径,因为我的路径比较多 所以重定向请求到一台web服务器上了

4.。关于防盗链
1.com的需求是 不是从本来来的请求给除一个403
因为在虚拟主机里配置毫无作用 可能是我们用的是虚拟目录的缘故
所以我们直接对目录做的防盗链
在alias里
别名配置
                location /res/ {
                alias   /opt/Src/;
                valid_referers none blocked server_names *.1.com ;
                if ($invalid_referer) {
        return 403;
                }
        }

5,关于动态请求转发
location  ~ ^/login/(.*\.do)$ {
                proxy_pass      http://login ;
        proxy_set_header  X-Real-IP  $remote_addr;
}
~ ^/login/(.*\.do)$ 这个表示 凡是匹配/login/ 下 .do的都转发到一个upstream池里处理 这里的$符号并不起多大作用 只要是有.do的他会全部转 并不是以.do结尾的才转

6.关于php上传文件大小的问题
只改php里的配置是没有用的
需要更改的地方还有nginx的配置

client_max_body_size 10M;
他的默认值是1M;

以上就是基本的注意点

[ 本帖最后由 asusarhai 于 2009-2-12 11:06 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-01-09 10:56 |只看该作者

回复 #1 asusarhai 的帖子

好文,我在迁移的时候,也遇到上面的一些问题。

论坛徽章:
0
3 [报告]
发表于 2009-01-09 13:14 |只看该作者
看过了

论坛徽章:
0
4 [报告]
发表于 2009-01-13 13:36 |只看该作者
不知楼主有没有遇到过返回400错误的情况,

这时在访问日志中出现:
" 400 0 "-" "-" "-" "-"
这种记录

论坛徽章:
8
综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:00金牛座
日期:2014-10-10 11:23:34CU十二周年纪念徽章
日期:2013-10-24 15:41:34酉鸡
日期:2013-10-19 10:17:1315-16赛季CBA联赛之北京
日期:2017-03-06 15:12:44
5 [报告]
发表于 2009-01-14 17:34 |只看该作者
好文


记录下

论坛徽章:
2
狮子座
日期:2013-08-26 15:25:32金牛座
日期:2013-09-05 15:45:36
6 [报告]
发表于 2009-01-14 18:57 |只看该作者
貌似那个不自动给子目录加/的问题好像可以用两个参数解决啊

optimize_server_names off;#优化服务器名称:关
server_name_in_redirect off;#服务器名称重定向:关

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
7 [报告]
发表于 2009-01-14 20:54 |只看该作者
好文收藏。

论坛徽章:
0
8 [报告]
发表于 2009-01-15 13:39 |只看该作者
原帖由 kisswen 于 2009-1-14 18:57 发表
貌似那个不自动给子目录加/的问题好像可以用两个参数解决啊

optimize_server_names off;#优化服务器名称:关
server_name_in_redirect off;#服务器名称重定向:关

我之前有试验过 好像没管用

论坛徽章:
0
9 [报告]
发表于 2009-02-07 13:09 |只看该作者
关注 Nginx。。。。
可以应用在高并发的站点上,不知道比起lighttpd 效果如何

论坛徽章:
0
10 [报告]
发表于 2009-02-08 16:24 |只看该作者
正在关注nginx
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP