`
menjoy
  • 浏览: 423015 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

从apache迁移到nginx的几个心得

阅读更多

我们的网站是lvs ->apache->tomcat 架构 的 现在已经全面转换成lvs->nginx ->tomcat架构
以下是我在迁移中遇到的几个问题   欢迎大家指正

1. 访问目录不能自动加上/
当我们去访问服务器上的一个目录时候,他不会自动加上一个/ ,浏览器会给出改页无法打开的错误,这个时候浏览器去取的地址实际上是upstream中所写的地址和端口或如果没有使用 upstream时 他就会去访问servername中设置的内容 比如 我设置的是localhost  浏览器会去访问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.d1xn.com ;
  root   /opt/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/index;                       //只在这边定义是没有用的
   rewrite ^/(\d+)\.home$ /ZONE/index.html?userId=$1 last;
   index  index.html index.htm;
  }   



2.URL重写的注意事项:
原有的url支持正则  重写的url不支持正则
rewrite ^/(\d+)\.home$ /ZONE/index.html?userId=$1 last;
这个重写中 ^/(\d+)\.home$ 这部分支持正则
而/ZONE/index.html?userId=$1
不要用正则 也不匹配正则 /ZONE/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. 关于防盗链
第一虚拟网的需求是 不是从本地来的请求给除一个403
因为在虚拟主机里配置毫无作用 可能是我们用的是虚拟目录的缘故
所以我们直接对目录做的防盗链
在alias里
别名配置
  location /res/ {
                alias   /opt/src/;
                valid_referers none blocked server_names *.d1xn.com   *.woniu.com;
                if ($invalid_referer) {
     return 403;
                }
        }
5,关于动态请求转发
location  ~ ^/log in/(.*\.do)$ {
                proxy_pass      http://login ;
    proxy_set_header  X-Real-IP  $remote_addr;
}
~ ^/login/(.*\.do)$ 这个表示 凡是匹配/login/ 下 .do的都转发到一个upstream池里处理 这里的$符号并不起多大作用 只要是有.do的他会全部转 并不是以.do结尾的才转

以上就是我遇到的问题及其解决办法

分享到:
评论

相关推荐

    apache到nginx配置文件转换工具

    一个开源的Linux下运行的命令行工具,能将Apache的配置文件转换成相应的Nginx的配置文件。本工具能自动将Apache Web服务器的配置文件转化成Nginx的配置文件,减少WEB服务器迁移的工作量。 该工具从Apache Web服务器...

    Apache2Nginx简单试用

    Apache2Nginx是一个开源的linux下运行的命令行工具.它可以把apache 配置文件转换成对应的nginx 配置文件.对于一般的功能. 比如目录 url重写.这都从测试来看.基本上不存在问题.对于不能转换的.会有注释在转换好的配置...

    实战Nginx取代Apache的高性能Web服务器_文字版

    1. 配置文件结构:Nginx的主配置文件通常为`nginx.conf`,其中包含多个server块,每个server块可以配置不同的虚拟主机。 2. 监听端口:通过`listen`指令指定Nginx监听的端口。 3. 虚拟主机:使用`server_name`指令...

    Apache Tomcat JBOSS Nginx区别

    Apache Tomcat JBOSS Nginx区别 Apache Tomcat 和 JBOSS 是两种不同的服务器软件,而 Nginx 是一种高性能的 HTTP 服务器。下面我们来详细比较它们的区别: 一、Apache 和 Tomcat Apache 是一个 Web 服务器,...

    cluster+apache+nginx

    4. **热备模式**:通过设置多个Apache服务器,Nginx可以将流量分配到活动服务器,当主服务器故障时,可以迅速切换到备份服务器,确保服务的连续性。 文件名"cluster+apache2.2+nginx0.8"暗示了这可能是一个关于...

    apache与nginx区别

    根据测试结果,Nginx能够轻松支持超过50,000个并发连接,而Apache在此方面的表现相对较弱。 - **资源占用**:Nginx由于其轻量级的设计,在内存占用方面远低于Apache。这意味着Nginx能够在有限的硬件资源下提供更好的...

    Apache + nginx + resin 详细配置

    总结,Apache+nginx+resin的配置涉及到多层服务器的协同工作,这种架构可以充分利用每个组件的优势,提供高效且可扩展的Web服务。正确配置和理解这些组件的交互是实现这一目标的关键。在实际部署中,还需要考虑负载...

    apache与nginx安装使用

    一个基本的Nginx配置示例,用于代理到本地运行的Node.js应用: ``` server { listen 80; server_name example.com; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_...

    prestashop1.6从apache转换成nginx的重写规则

    prestashop_1.6.0.9 从apache转换nginx服务器的重写规则 text.conf是apache的.htaccess转换成nginx的重写规则 将text.conf这个文件放在nginx的rewrite里 然后在nginx的配置文件中include进来就可以了. 有什么...

    php运行环境搭建(apache nginx)

    Nginx以其高性能和低内存占用而受到欢迎,特别是在高并发场景下。搭建Nginx环境涉及以下步骤: 1. **安装Nginx**: 使用包管理器安装Nginx,并确保服务启动并设置为开机自启。 2. **安装PHP-FPM**: PHP-FastCGI进程...

    apache配置文件转换到nginx配置文件的工具

    一个开源的Linux下运行的命令行工具,能将Apache的配置文件转换成相应的Nginx的配置文件。本工具能自动将Apache Web服务器的配置文件转化成Nginx的配置文件,减少WEB服务器迁移的工作量。 该工具从Apache Web服务器...

    apache+nginx+tomcat

    Apache、Nginx 和 Tomcat 是在 Web 服务器领域中常用的三个组件,它们各自承担着不同的职责,并且经常被组合使用以实现高效、稳定的网站部署和应用服务。 Apache HTTP Server 是世界上最广泛使用的开源 Web 服务器...

    nginx替代方案,nginx代替apache与jboss

    ### Nginx 作为 Apache 和 JBoss 的替代方案 #### 背景介绍 随着互联网技术的不断发展,网站流量的增长对服务器性能提出了更高要求。Apache 和 JBoss 是两种广泛使用的 Web 服务器和应用服务器,但在高并发场景下,...

    apache2nginx.zip

    这个工具旨在简化迁移过程,使得在性能优化、负载均衡或资源管理等方面有更高需求的开发者和系统管理员能够轻松地从Apache web服务器过渡到Nginx web服务器。Nginx以其高效的反向代理、负载均衡和静态文件处理能力而...

    php apache/nginx

    11. `virtual`:执行一个Apache子请求,可以用来代理到其他URL或内部重定向。 关于Apache和PHP的集成,有几种方法,如使用PHP作为Apache模块(mod_php),FastCGI,或者通过PHP-FPM(FastCGI Process Manager)。每...

    Nginx+Apache负载均衡

    - **高性能负载均衡**:Nginx+Apache 组合提供了一个高性能、低成本的负载均衡解决方案,能够显著提高网站性能和服务可用性。 - **易于配置与管理**:相比昂贵的商用硬件负载均衡器,Nginx 的配置更加简单直观。 - *...

    配置Nginx前端Apache后端服务器

    在多台服务器环境下,Nginx还可以配置为负载均衡器,通过轮询、最少连接数等方式将请求分发到多个Apache实例上,从而提高系统的可用性和响应速度。 ### 结论 通过合理配置Nginx和Apache,不仅可以显著提升网站的...

    IIS、Apache、Tomcat、Nginx、CDN,它们之间有何区别

    IIS(Internet Information Services)、Apache、Tomcat、Nginx和CDN(内容分发网络)是IT领域中常见的几个技术名词,它们各有各的用途和特点。 IIS是微软公司开发的一个Web服务器软件,它是Windows操作系统的一个...

    实战Nginx取代Apache的高性能Web服务器

    当我们决定使用Nginx来取代Apache时,需要注意的是如何迁移现有的Apache服务器配置到Nginx。需要关注的关键配置包括虚拟主机的设置、SSL/TLS加密、URL重写规则等。Nginx的配置文件语法虽然与Apache的httpd.conf有所...

Global site tag (gtag.js) - Google Analytics