`
we1818
  • 浏览: 61909 次
  • 性别: Icon_minigender_1
  • 来自: 湖州
社区版块
存档分类
最新评论

为什么要使用nginx

    博客分类:
  • java
阅读更多

首先探讨一下为什么要使用nginx:

1、类似于apache+resin,nginx用于提供静态页面服务,比java服务器要强。虽然这些java服务器的性能都不赖,tomcat新版甚至还支持了epoll,但是用nginx来处理静态文件是一定比这些服务器更稳妥并更快速的。

2、nginx在配合java应用服务器时相比apache耦合度更低,所以它可以用相同的方式连上所有能支持http服务能力的java应用服务器,无论是tomcat、resin、weblogic、jetty、websphere……,并且可以轻易地将一个应用同时连接不相同的服务器。譬如一台跑tomcat,一台跑resin,这一点在切换或测试生产环境时非常有用。另外耦合度的降低,将使nginx和这些服务器之间的相互影响降到最低,这样两者就能各尽其责,apache一般是采用一个模块来和java应用服务器打交道,这个模块是会对apache的运行或多或少产生影响的,nginx告诉我们这些模块是多么的鸡肋,java服务器要不就往fastcgi协议支持方面发展会更好。

3、nginx的一些特性可以保住脆弱的java服务器。其中可以点名的:1是可细致定制的负载均衡策略;2是超强的故障屏蔽功能可以做到不遗漏任何一个请求;3是客户端连接的异步处理;4是比java服务器强上百倍的负荷能力。

综合这些优点,一般的java应用服务器,接上一个nginx后,在服务稳定性上将可匹敌数万美金的大型java集群服务器,java开发者就不用再为java性能方面发愁了。

如果决定试用一下nginx,那接下来的事就比吐口水轻松得多了。

nginx可以用两种方式去接java后台:

1、将jsp扩展名的请求发往后台,这是比较传统的方式

2、将所有请求都发往后台,而将一些静态文件的目录留下

3、将所有请求都发往后台,而将某种扩展名的链接留下

这三种方式都是利用链接特征处理的,举例说明(例子中是服务器是单机):

首先配置一个upstream,这是通用的:

upstream www.sudone.com {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}

127.0.0.1:8081和127.0.0.1:8082就是后端服务器了,resin支持两种方式服务,一种是引擎方式用于连接apache和IIS,另一种是http server方式,一定要启动的是http服务器方式的,这样这两个端口才有效。tomcat我不太清楚,如果有两种方式,也一定要启动http server方式,检查的办法是通过一个链接要能够直接访问得到页面。

针对扩展名的策略的配置:

server {
listen 80;
server_name www.sudone.com;

location / {
root /data/html/;
rewrite "^/([0-9]+)\.html$" /a.jsp?id=$1 last;
}

location ~ (\.jsp)|(\.do)$ {
proxy_pass http://www.sudone.com;
}

}

需要注意的事项是:

1、location ~ (\.jsp)|(\.do)$这一段中的proxy_pass标签后面一定不要写/,也不能多写/jsp,例如不能写成proxy_pass http://www.sudone.com/;,原因是location如果用到正则表达式,则不能在proxy_pass中含有链接路径。

2、server_name www.sudone.com;指定的是用户访问nginx时用的域名,proxy_pass http://www.sudone.com;这个是nginx upstream的名称,同时是nginx访问后台用的域名,多数情况下用相同名称就可以了,有一些特殊情况需要用到不相同名称的,则要确保后台不会因为这一点惹出乱子。

3、rewrite直接写在location /下面就可以了,不能写在location ~ (\.jsp)|(\.do)$里面,注意rewrite后面的参数在这里一定要是last。

4、我在此配置里仅仅配置了jsp和do,当然java还不只支持这么多,所以要找到所有java链接规则才可以。

把所有请求都发往后台的配置(2和3一起写了):

server {
listen 80;
server_name www.sudone.com;

location / {
proxy_pass http://www.sudone.com;
}

location /images/ {
alias /data/html/images/;
}

location ~ (\.jpg)|(\.gif)|(\.png)$
{
root /data/html/;
}

}

这两种配置和针对jsp扩展名的原理刚好是反的,注意事项:

1、和针对jsp扩展名不同,在proxy_pass http://www.sudone.com;这里,因为没有用到正则表达式,所以可以在后面写/,亦可支持/jsp。

2、location /images/这一段用alias会能看得比较清楚,也可以用root标签,不过这时就应该写成:root /data/html/,提前一级。

3、location ~ (\.jpg)|(\.gif)|(\.png)$这一段只能用root标签,不能写alias,location用正则后再用alias的话nginx不支持,我也想不清楚用alias的话逻辑会是怎样的。

以上配置都是最简化的配置,还有很多参数可以调整,我在我其他文章里会有所讲述。另外提醒,要好好测试,有问题先思考,这些配置都不是万能配置还不足以能解决所有情况,同时这几种配置也没有优劣之说,如果不确定用哪种,采用第一种方式就可以了。

 

分享到:
评论

相关推荐

    nginx for windows下载安装与配置

    引言:为什么要使用nginx 目前很多大型网站都使用了nginx,新浪、网易、QQ等都使用了nginx,说明nginx的稳定性和性能还是非常不错的。这主要是因tomcat处理静态资源的速度比较慢,所以首先想到的就是把所有静态资源...

    nginx高可用搭建文档(含脚本文件文档)

    为什么要使用nginx? 1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。 2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。 3、反向代理,负载均衡。...

    普通用户启动nginx,使用80端口

    可以使用`setcap`命令为Nginx可执行文件添加网络绑定权限: ```bash setcap 'cap_net_bind_service=+ep' /usr/local/openresty/nginx/sbin/nginx ``` 这条命令的作用是赋予指定的Nginx可执行文件权限,使其能够...

    nginx,windows直接解压使用

    **Nginx在Windows环境下的直接使用指南** Nginx是一款高性能、轻量级的Web服务器和反向代理服务器,广泛应用于互联网服务。在Windows操作系统上,安装和使用Nginx相对简单,只需要进行几个基本步骤。下面我们将详细...

    linux服务器上使用nginx访问本地静态资源的方法

    1.查看80端口是否被占用,一般80端口多被apache服务占用。 netstat -anp|grep 80  2.修改apache服务的端口号 ...以上所述是小编给大家介绍的linux服务器上使用nginx访问本地静态资源的方法,希望对大家有所帮助!

    nginx1.18 nginx1.18 nginx1.18

    5. **测试与启动**:使用 `nginx -t` 命令检查配置文件的正确性,无误后使用 `nginx -s reload` 重新加载配置,启动服务。 6. **监控与维护**:定期检查 Nginx 日志,监控服务器性能,并根据需要调整配置。 在使用...

    nginx将进程注册为Windows服务

    为什么要在Windows上注册Nginx为服务? 注册Nginx为Windows服务有以下几个好处: 1. **自动启动**:服务可以在系统启动时自动启动,无需手动干预。 2. **后台运行**:服务不受用户登录/注销状态影响,可以持续...

    nginx 使用及配置文件

    ### Nginx 使用及配置详解:与Tomcat的协同工作 #### 一、Nginx简介 Nginx是一款高性能的HTTP服务器和反向代理服务器,由Igor Sysoev编写,于2004年首次发布。它以其高并发处理能力、低内存消耗和稳定性而著称,在...

    使用nginx部署前端项目(超详细教程).pdf

    【使用Nginx部署前端项目】的教程是一个详尽的指南,主要面向初学者,旨在教会读者如何利用Nginx高效地部署前端应用。Nginx是一个高性能的Web服务器和反向代理,因其高并发处理能力和低内存占用而受到广泛青睐。 ...

    nginx安装与使用.zip

    nginx安装与使用 http://blog.163.com/njut_wangjian/blog/static/1657964252013327103716818/ Nginx开发从入门到精通 http://tengine.taobao.org/book/index.html nginx官网上下载相应的安装包,--- 直接解压就...

    Nginx1.22.0版本Linux已编译可直接使用

    此外,别忘了为 Nginx 创建系统服务以便于管理,例如使用 `systemctl` 或 `service` 命令启动、停止、重启服务。 总的来说,预编译的 Nginx 1.22.0 Linux 版本提供了快速部署和使用的便利,降低了入门门槛,尤其...

    win环境使用nginx的nginx-http-flv-module.zip

    在windows 7 64位 环境下使用nginx的nginx-http-flv-module搭建flv视频流播放所有的安装包,参考:https://blog.csdn.net/qq_33071429/article/details/102628008

    nginx-1.26.0最新版本已完成编译可解压直接使用

    **Nginx 1.26.0 最新版编译及使用详解** Nginx 是一款高性能、轻量级的 Web 服务器/反向代理服务器,因其高效的性能、丰富的功能和简单易用的配置,被广泛应用于各类互联网服务中。在本文中,我们将详细介绍 Nginx ...

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

    通过将 Apache 替换为 Nginx,并结合 JBoss 使用,不仅可以显著提升系统的性能,还能简化运维工作并降低成本。对于需要处理大量并发请求的现代 Web 应用来说,Nginx + JBoss 的组合是一个非常优秀的选择。

    nginx服务器及使用

    `nginx服务使用及设置自启动方法.doc`文件很可能是详细的操作指南,它可能包含如何配置`nginx-service.exe`以实现开机自启动的步骤,以及如何管理和控制Nginx服务的说明。建议仔细阅读这份文档,以确保正确设置自...

    windows 注册Nginx为服务,自动重启

    要将Nginx注册为服务,我们需要创建一个批处理文件或者使用专门的自动化工具。这个批处理文件通常包含以下内容: ```batch @echo off sc create nginx binPath= "C:\nginx-1.20.2\nginx.exe" obj= ".\nginx" ...

    nginx使用教程.doc

    **Nginx 使用教程** Nginx 是一款高性能的 HTTP 和反向代理服务器,常用于网站的负载均衡和静态资源的处理。以下是一份详细的 Nginx 在 Windows 环境下的安装、配置和使用教程。 ### 一、前提环境 在安装 Nginx ...

    nginx使用指南.pdf

    Nginx 使用指南 一. Nginx 基础知识 Nginx 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。Nginx 的主要特性包括处理静态文件、索引文件和自动索引、无缓存的反向代理加速、简单的...

    apache与nginx安装使用

    使用`sudo nginx -t`测试配置,无误后用`sudo systemctl restart nginx`重启服务。 三、选择Apache还是Nginx? Apache适合动态内容处理和模块化扩展,如PHP、Perl等,且对旧版脚本语言支持良好。Nginx则擅长静态...

    使用nginx支持php

    标题“使用nginx支持php”指的是在Web服务器环境中配置...总之,要让Nginx支持PHP,关键在于正确配置Nginx的server块以将PHP请求转发给PHP-FPM,并确保所有必要的组件(Nginx、PHP-FPM、相关扩展)都已安装并配置妥当。

Global site tag (gtag.js) - Google Analytics