apache转换到了nginx的几个注意点

最近把整站从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; 

以上就是基本的注意点


转自:http://www.chinaunix.net/jh/13/1351579.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值