标签归档:Nginx

Nginx(Tengine)实现Tomcat热部署与负载均衡

业务背景

主要需求是系统更新期间实现热部署,提供不间断服务。其次是为多个应用服务器(Tomcat)实现负载均衡的效果。另外还需要开启https访问,同事支持http与https同时访问,并根据不同的访问请求转发到Tomcat不同的端口。

软硬件需求

Tengine(淘宝开源Nginx服务器) * 1,Tomcat7.53 * 2,服务器IP:192.168.64.166

实现细节

1.编译Nginx

首先下载Nginx服务器,地址:http://tengine.taobao.org
如下编译:
本次应用中需要用到HTTPS服务,所以在编译时需要特殊加入 –with-http_ssl_module。

继续阅读

Nginx的反向代理负载均衡

       最近工作未正式进入开发,相对来说比较清闲,突然想起了Nginx,然而它大多时候都是和PHP一块出现的,相对于我们这些做Java常用的Tomcat用到的比较少。前段时间看了部分负载均衡的技术文摘,想到了用Nginx做反向代理,将Tomcat集群归并起来有Niginx做代理进行访问的控制和转发的负载处理。

  网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器、分离出图片作为单独服务,这些是简单的数据的负载均衡,将压力分散到不同的机器上。有时候来自Web前端的压力,也能让人十分头痛。怎样将同一个域名的访问分散到两台或更多的机器上呢?这其实就是另一种负载均衡了,Nginx自身就可以做到,只需要做个简单的配置就行。 继续阅读

CentOS下Yum安装Nginx

最近弄了个VPS,后台安装好centos后用SSH登入。
首先查看下是否安装了yum,没有yum可自行安装,网上有的是文章这里不重复了。接着安装EPEL,在命令行敲入:
shell>rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm 回车即可。
shell>yum update #更新。
shell>yum install gcc  gcc-c++
接 下来是安装mysql,我安装的版本是5.1的,据官方介绍5.1版本的性能提升了20%,不管数字是真是假,反正有提升就是了。安装可以选择二进制方式 安装,也可以选择源代码 方式安装。官方推荐二进制方式安装,原因是二进制方式用了许多优化措施,可提供较高的负载。下面分别介绍两种方式的安装方法:
二进制方式:首先要知道自己的cpu架构,下载相应的安装包。我用的是x86 (non RPM packages),32位的,比较通用。
我的vps地址在美国所以选择美国的下载地址
shell>wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.34-linux-i686-glibc23.tar.gz/from/http://mysql.mirror.redwire.net/
shell>tar xzvf mysql-5.1.34-linux-i686-glibc23.tar.gz
shell>mv  mysql-5.1.34-linux-i686-glibc23  mysql
shell>groupadd mysql
shell>useradd   -g mysql mysql
shell>cd mysql 继续阅读

Nginx二级域名(泛域名)绑定问题

由于搭建的各个网站都在一台服务器上(运行环境PHP+Mysql+Nginx),所以在只能采取多域名绑定来实现比较好的区别站点。
举个例子我的站点根目录为: /usr/www 下面搭建着主网站,绑定的域名是:http://chzker.com。然后在 /usr/www/nav 下面安装的是导航站点。常规的访问方式是:http://chzker.com/nav ,然而这种地址看着让人恶心,远不如用二级域名 http://nav.chzker.com 来访问要漂亮。那怎么来实现呢?
首先我们把http://nav.chzker.com”>http://chzker.com,http://nav.chzker.com 都解析到相同的IP地址也就是 我的服务器地址,然后再Nginx.conf开启另外一个Server,代码如下:

server {

listen       80;

server_name  blog.chzker.com chzker.com;

root /var/www/html;

index index.html index.php;

if (!-e $request_filename)

{
rewrite ^/post/([0-9]+)/?([0-9]+)?/?([0-9]+)?/?$ /read.php?entryid=$1&page=$2&part=$3 last;

继续阅读

Nginx的平滑升级

升级nginx的基本过程,以下是天一在CentOS环境下升级过程中小结得来的。
1、查看当然版本

#cd /usr/local/nginx/ #进入Nginx安装目录
# sbin/nginx -V #查看版本
nginx version: nginx/0.7.60
configure arguments: –user=www –group=www –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module #编译项

得到原来./configure 的编译项

2.下载最新版
前往查看最新版,http://nginx.org/en/download.html

#cd /data/soft/
#wget http://nginx.org/download/nginx-0.8.36.tar.gz #下载
#tar xzvf nginx-0.8.36.tar.gz #解压缩
#cd nginx-0.8.36

继续阅读

完美安装最新 CentOS + Nginx + PHP-FPM + MySQL

本文为 21andy.com 原创
PHP 5.3.1
MySQL 5.0.89
Nginx 0.8.33 或 0.7.65 (可选)
现在,我们可以快速全自动搞定 CentOS + Nginx + PHP-FPM + MySQL 的安装了
这个可比网上流传的什么一键安装包要好得多,强烈推荐此法安装,适合所有菜鸟和高手
我服务器上全用的源代码编译安装,也好不到哪去,还很费劲
我这个装完已经包含 php 的一些常用扩展, PDO,eaccelerator,memcache,tidy等等
先新建一个 repo

# vi /etc/yum.repos.d/centos.21andy.com.repo

放入如下内容

name=21Andy.com Packages for Enterprise Linux 5 – $basearch
baseurl=http://www.21andy.com/centos/5/$basearch/
enabled=1
gpgcheck=0
protect=1

继续阅读

关于Nginx与Tomcat的联姻

Nginx和tomcat的融合,其实就是对jsp解析的转发,当用户请求解析jsp文件时,Nginx把相应的jsp文件转发给8080端口解析,这样就实现了在80端口对jsp文件进行解析,其实还是tomcat在工作,仅仅是Nginx做了个转发功能.核心Nginx.conf代码如下,在里面添加这段代码就可以了

server{
listen 80;
server_name localhost;
index index.html index.htm index.jsp;#设定访问的默认首页地址
root /home/www/web/ROOT;#设定网站的资源存放路径
#limit_conn crawler 20;
下面是需要添加的代码

location ~ .*.jsp$ #所有jsp的页面均交由tomcat处理
{
index index.jsp;
proxy_pass http://localhost:8080;#转向tomcat处理
}

验证配置文件是否正确:
# /usr/local/nginx/sbin/nginx –t
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully
出现这个提示说明没有问题。

继续阅读

针对Bo-blog的Nginx Rewrite实现

今天决定做一下URL优化,直接使用URL Rewrite…后来发现Bo-Blog官网只提供了Apache的Rewrite规则,但有些朋友的空间或VPS使用的是Nginx,就如我的网站 就是使用Nginx而非Apache,那我想使用Bo-Blog的高级高级URL Rewrite,就必须使用Nginx的Rewrite规则,但这规则实在是只了解皮毛,不过好象现在这个社会有网络这东西,在牛人张宴博客上那找到了, 特在此记录以做备份之用。
这个规则我的博客正在使用,目前没发现任何问题,下见代码是写在Nginx.conf里面的:

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
worker_connections  1024;
}

继续阅读