2014-04-14 08:38:01
来 源
IT技术网
Linux Apache配置
本文介绍Apache服务器替换为Nginx需要注意的几个方面,希望对于初学Nginx服务器相关的朋友有帮助,更多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;

以上就是基本的注意点

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。