【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 编辑 ]
scyzxp 回复于:2009-01-09 10:56:42
好文,我在迁移的时候,也遇到上面的一些问题。
daizhongxian 回复于:2009-01-09 13:14:56
看过了
marshalys 回复于:2009-01-13 13:36:44
不知楼主有没有遇到过返回400错误的情况,
这时在访问日志中出现:
" 400 0 "-" "-" "-" "-"
这种记录
ruochen 回复于:2009-01-14 17:34:42
好文
记录下
kisswen 回复于:2009-01-14 18:57:22
貌似那个不自动给子目录加/的问题好像可以用两个参数解决啊
optimize_server_names off;#优化服务器名称:关
server_name_in_redirect off;#服务器名称重定向:关
lsstarboy 回复于:2009-01-14 20:54:23
好文收藏。
asusarhai 回复于:2009-01-15 13:39:33
引用:原帖由 kisswen 于 2009-1-14 18:57 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=9946406&ptid=1351579]
貌似那个不自动给子目录加/的问题好像可以用两个参数解决啊
optimize_server_names off;#优化服务器名称:关
server_name_in_redirect off;#服务器名称重定向:关
我之前有试验过 好像没管用
kenrong 回复于:2009-02-07 13:09:10
关注 Nginx。。。。
可以应用在高并发的站点上,不知道比起lighttpd 效果如何
flysever 回复于:2009-02-08 16:24:13
正在关注nginx
Kenbaby 回复于:2009-02-09 15:03:58
[u][size=7][color=Red]apache到nginx,何以有升级一说?不要误人子弟嘛~[/color][/size][/u]
ritto 回复于:2009-02-10 01:37:05
楼主说的是性能升级的吧:mrgreen:
wangbin 回复于:2009-02-11 07:01:34
正在关注nginx
asusarhai 回复于:2009-02-12 11:05:45
引用:原帖由 Kenbaby 于 2009-2-9 15:03 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=10033080&ptid=1351579]
apache到nginx,何以有升级一说?不要误人子弟嘛~
应该是转换到 呵呵
我@一条柴 回复于:2009-03-06 09:28:12
mark ......
lastexile 回复于:2009-03-06 17:08:07
nginx性能就是不错:outu:
dreamer200 回复于:2009-03-13 18:09:22
nginx 我在生产环境下还没有使用过
关注中
myforever 回复于:2009-03-15 23:59:01
开始关注nginx
dashan79 回复于:2009-04-21 16:21:17
好文章,我把我的apache转到nginx时,也碰到不少问题。不过nginx确实不错。比apache配置简单。而且正则表达式非常强。
聪明笨小孩 回复于:2009-06-08 11:34:00
目前在用APACHE 只是测试用过nginx
|