转:Nginx+Apache环境的安装与配置
转:http://www.server110.com/nginx/201404/8817.html
我们依然尽可能采用yum来安装我们需要的软件,由系统官方维护的软件,其安全性和稳定性都值得信赖,并且容易管理,升级方便,但是在CentOS和RHEL的官方yum源中暂时没有Nginx等软件包,所以我们需要使用EPEL的yum源。EPEL是什么,EPEL的yum源怎么添加,点击这里查看。
本文将要介绍的Nginx+Apache结构,其实就是Nginx做前端,Apache做后端,充分发挥他们各自的优势之处。Nginx对于高并发性能出众,Proxy功能强效率高,占用系统资源少,而Apache在高并发时对队列的处理比FastCGI(Nginx需要通过fastcgi等方式运行php)更好,并且在处理动态php页面时,mod_php也比php-cgi更稳定更高效。
也就是说,我们的目的是,由Nginx来接收客户端的请求,如果是动态页面请求,就交给Apache处理,然后经由Nginx再返回给客户端,其余的请求,则由Nginx自己处理,然后把结果返回给客户端,。当然了,你完全可以让Nginx只做Proxy功能,所有的请求都交给Apache,Tomcat等处理,本文使用前者。
但是,在本文中,我们实现的是在一台服务器里一个Nginx加一个Apache的简单结构,在实际应用中,可能前端是由一台或多台Nginx组成的代理服务器,后端则是多台Apache或其他Web服务器,再加上多种第三方软件而组成的集群。
前提约定:假设我们系统默认主站点名是www.server110.com,网站根目录是/var/www/server110
第一步,安装并配置Nginx,安装完之后,配置文件都在/etc/nginx目录下,主设置文件/etc/nginx/nginx.conf:
[root@test ~]# yum -y install nginx
[root@test ~]# vi /etc/nginx/nginx.conf
user nginx;
worker_processes 2;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
use epoll;
worker_connections 2048;
}
http {
include /etc/nginx/mime.types;
include /etc/nginx/proxy.conf;
include /etc/nginx/gzip.conf;
default_type application/octet-stream;
index index.html index.htm index.php;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
tcp_nopush on;
server_tokens off;
keepalive_timeout 60;
server_names_hash_bucket_size 128;
server {
listen 80;
server_name www.server110.com;
root /var/www/server110;
location ~* .*\.(gif|jpg|jpeg|png|bmp|ico|css|js|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)$ {
expires 2d;
}
# 如果你需要客户端缓存的内容以及媒体,图片等文件固定放置一些目录下的话,就把上面那个
# location注释掉,用下面这种方式
# location ~ ^/(images|javascript|js|css|flash|media|static)/ {
# expires 2d;
#}
location ~ .*\.(php?|cgi|pl|py)$ {
proxy_pass http://127.0.0.1:8888;
}
location ~ /\.ht {
deny all;
}
location ~ /.+\.(inc|conf|cnf) {
deny all;
}
access_log /var/log/nginx/server110-access.log main;
#access_log off
}
# Load config files from the /etc/nginx/conf.d directory
include /etc/nginx/conf.d/*.conf;
}
[root@test ~]# vi /etc/nginx/proxy.conf
proxy_redirect off;
proxy_hide_header Vary;
proxy_set_header Accept-Encoding '';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 32 4k;
proxy_busy_buffers_size 64k;
[root@test ~]# vi /etc/nginx/gzip.conf
gzip on;
gzip_http_version 1.0;
gzip_disable "MSIE [1-6]\.";
gzip_disable "Mozilla/4";
gzip_comp_level 3;
gzip_proxied any;
gzip_vary on;
gzip_buffers 4 16k;
gzip_min_length 1100;
gzip_types text/plain text/xml text/css application/xml application/xhtml+xml application/rss+xml application/atom_xml application/javascript application/x-javascript;
为了让nginx.conf简洁,我把一些相关的共通设定放到同一个专门的文件里,然后在主配置文件nginx.conf里加载。如果你使用了VirtualHost运营多个站点,你可以根据不同站点的需求而配置不同的设定文件,然后分别在各自的server域里加载。
第二步,安装并配置Apache,配置文件在/etc/httpd/下,我们修改主配置文件/etc/httpd/conf/httpd.conf,配置文件太长,我只写我需要改的地方:
[root@test ~]# yum -y install httpd
[root@test ~]# vi /etc/httpd/conf/httpd.conf
Listen 80
↓改成
Listen 127.0.0.1:8888
DocumentRoot "var/www/html"
↓改成
DocumentRoot "/var/www/server110"
<Directory "/var/www/html">
↓改成
<Directory "/var/www/server110">
Options Indexes FollowSymLinks
↓改成如下,允许CGI,SSI
Options Includes ExecCGI FollowSymLinks
AllowOverride None
↓改成如下,支持.htaccess
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ServerSignature On
↓改成如下,在现实错误页面的时候不会显示服务器和apache的版本
ServerSignature Off
#AddHandler cgi-script .cgi
↓改成如下,cgi脚本使用.cgi,.pl,.py
AddHandler cgi-script .cgi .pl .py
第三步,设置VirtualHost(如果你需要在本机上运营多个站点,否则略过此步):
1.修改/etc/httpd/conf/httpd.conf:
#NameVirtualHost *:80
↓改成如下
NameVirtualHost 127.0.0.1:8888
#追加下面4行,www.server110.com是我们的默认主站
<VirtualHost 127.0.0.1:8888>
ServerName www.server110.com
</VirtualHost>
Include virtual/*.conf
2.修改/etc/nginx/nginx.conf,在server{}域的后面追加如下一句:
include /etc/nginx/virtual/*.conf;
3.假设我们还要在本机上运行一个站点叫www.cooliter.com:
[root@test ~]# mkdir /etc/nginx/virtual/
[root@test ~]# mkdir /etc/httpd/virtual/
[root@test ~]# vi /etc/nginx/virtual/www.cooliter.com.conf
server {
listen 80;
server_name www.cooliter.com;
root /var/www/cooliter;
location ~* .*\.(gif|jpg|jpeg|png|bmp|ico|css|js|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)$ {
expires 24h;
}
location ~ .*\.(php?|cgi|pl|py)$ {
proxy_pass http://127.0.0.1:8888;
}
location ~ /\.ht {
deny all;
}
location ~ /.+\.(inc|conf|cnf) {
deny all;
}
access_log /var/log/nginx/cooliter-access.log main;
#access_log off
}
[root@test ~]# vi /etc/httpd/virtual/www.cooliter.com.conf
<VirtualHost 127.0.0.1:8888>
ServerAdmin webmaster@cooliter.com
DocumentRoot /var/www/cooliter
ServerName www.cooliter.com
UseCanonicalName Off
ErrorLog logs/www.cooliter.com-error_log
CustomLog logs/www.cooliter.com-access_log common
</VirtualHost>
第四步,安装MySql,参照这篇教程。
第五步,安装php及其他常用组件:
[root@test ~]# yum -y install php php-mysql php-gd php-xml php-mbstring php-mcrypt
第六步,安装php加速器eaccelerator和php-pecl-memcached模块,提高性能:
[root@test ~]# yum install php-eaccelerator php-pecl-memcached
设定文件分别是/etc/php.d/eaccelerator.ini和/etc/php.d/memcached.ini,如果你采用默认设置,就不需要修改设定文件了。
第七步,安装并配置Zend提供的php加速、解密软件,yum源里没有,直接从官方下载即可,不需要编译,下载的时候注意根据你的系统选择32位或者64位的版本。
1:如果你用的php是php5.3.x版本,需要安装的是Zend Guard Loader:
[root@test ~]# tar -xzvf ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz
[root@test ~]# ls ZendGuardLoader-php-5.3-linux-glibc23-i386/
README.txt php-5.3.x
#小提示,看解压目录下的README.txt里有使用说明
[root@test ~]# mv -T ZendGuardLoader-php-5.3-linux-glibc23-i386 /usr/lib/php/ZendGuardLoader-php-5.3
[root@test ~]# vi /etc/php.d/zend.ini
#添加如下内容,保存退出
[Zend Guard Loader]
zend_extension="/usr/lib/php/ZendGuardLoader-php-5.3/php-5.3.x/ZendGuardLoader.so"
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
2:如果你用的php是php5.2或更早的版本,需要安装的是Zend Optimizer:
[root@test ~]# tar -xzvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
[root@test ~]# ls ZendOptimizer-3.3.9-linux-glibc23-i386
EULA-ZendOptimizer Inventory.xml LICENSE README-ZendOptimizer data md5
#小提示1,看解压目录下的README-ZendOptimizer里有使用说明
[root@test ~]# ls ZendOptimizer-3.3.9-linux-glibc23-i386/data
4_2_0_comp 4_3_x_comp 5_0_x_comp 5_2_x_comp
4_2_x_comp 4_4_x_comp 5_1_x_comp poweredbyoptimizer.gif
#小提示2,解压目录下的data目录下根据不同的php版本提供了不同的so文件,假设我们的版本是php5.1.x的
[root@test ~]# mv -T ZendOptimizer-3.3.9-linux-glibc23-i386 /usr/lib/php/ZendOptimizer-3.3.9
[root@test ~]# vi /etc/php.d/zend.ini
#添加如下内容,保存退出
[Zend Optimizer]
zend_optimizer.optimization_level=1
zend_extension = "/usr/lib/php/ZendOptimizer-3.3.9/data/5_1_x_comp/ZendOptimizer.so"
第八步,启动Apache和Nginx,并测试(MySql就不测试了):
[root@test ~]# /etc/init.d/httpd start
[root@test ~]# /etc/init.d/nginx start
[root@test ~]# chkconfig httpd on
[root@test ~]# chkconfig nginx on
[root@test ~]# mkdir /var/www/server110
[root@test ~]# echo "hello,server110" > /var/www/server110/index.html
[root@test ~]# echo -e "<?php\nphpinfo();" > /var/www/server110/index.php
打开浏览器分别访问一下index.html和index.php,然后关闭Apache,再分别访问一下(php页面应该就访问不了了)。
测试gzip是否有效,因为我们设置了gzip_min_length为1100,所以低于1100bytes的页面不会压缩,你测试的页面内容最好大于1100bytes。
[root@test ~]# curl -I -H "Accept-Encoding:gzip,deflate" http://www.cooliter.com/test.txt
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 22 Jul 2011 04:45:30 GMT
Content-Type: text/plain
Last-Modified: Fri, 22 Jul 2011 04:40:30 GMT
Connection: keep-alive
Vary: Accept-Encoding
Expires: Sun, 24 Jul 2011 04:45:30 GMT
Cache-Control: max-age=172800
Content-Encoding: gzip <---证明服务器支持gzip压缩
后话,本文旨在介绍这种结构的搭建方法,所以用到的配置参数比较少,关于更详细的参数设置和优化,需要读者你自己根据实际情况结合官方帮助文档进一步去测试。
转载请注明原文地址:http://www.server110.com/nginx/201404/8817.html
转:Nginx+Apache环境的安装与配置的更多相关文章
- Nginx+Apache环境的安装与配置
我们依然尽可能采用yum来安装我们需要的软件,由系统官方维护的软件,其安全性和稳定性都值得信赖,并且容易管理,升级方便,但是在CentOS和RHEL的官方yum源中暂时没有Nginx等软件包,所以我们 ...
- 【C#】VS2015开发环境的安装和配置(二)2016-08-03更新
分类:C#.VS2015.WPF.ASP.NET MVC.Android.iOS.Unity3D: 更新日期:2016-08-03 按下面介绍的步骤安装即可. 一.安装JDK和Android SDK ...
- Nginx反向代理服务器的安装与配置
Nginx反向代理服务器的安装与配置 时间:10月19日 Nginx反向代理有不少需要我们解决的问题,其中有不少问题是基于安装上的问题,在安装完成后的相关调试也让很多人头疼不已.下面就向大家介绍有关于 ...
- Ubuntu16.04下LAMP环境的安装与配置
Ubuntu16.04下LAMP环境的安装与配置 最近做个实验需要用到Ubuntu环境的靶场,所以这里介绍下Ubuntu环境下LAMP的安装与配置,话不多说,我们gkd! 1.Apache2的安装 首 ...
- 【C#】VS2015开发环境的安装和配置(一)2016-08-03更新
分类:C#.VS2015.WPF.ASP.NET MVC.Android.iOS.Unity3D: 更新日期:2016-08-03 一.简介 为了避免网上乱七八糟的过时介绍,避免误导初学者,这次把至2 ...
- Java环境的安装与配置
Java环境的安装与配置 环境:Java8,win10 推荐oracle官网oracle官网https://www.oracle.com/index.html下载JDK进行安装 选择自己需要的版本下载 ...
- Twitter Storm:单机环境的安装与配置
Twitter Storm:单机环境的安装与配置 好久没写博客了,这一段时间一直被导师push着做毕业设计.由于目前的方向偏向于图像识别检索,毕设打算做一个基于分布式计算平台的图像检索系统,查阅相关资 ...
- Appium环境的安装与配置,Python测试脚本测试
Appium自动化测试系列1 - Appium环境的安装与配置 发表于4个月前(2015-01-27 14:34) 阅读(803) | 评论(0) 0人收藏此文章, 我要收藏 赞0 寻找 会’偷懒 ...
- go 语言开发环境的安装与配置
go 语言开发环境的安装与配置 编辑器选择 一直以来都是用sublime,但是听说sublime对于golang的插件支持并不是特别完善,并且VS Code只要在自身所带的扩展商店里安装go插件就可以 ...
随机推荐
- 用Hbase存储Log4j日志数据:HbaseAppender
业务需求: 需求很简单,就是把多个系统的日志数据统一存储到Hbase数据库中,方便统一查看和监控. 解决思路: 写针对Hbase存储的Log4j Appender,有一个简单的日志储存策略,把Log4 ...
- loutsScript 常用代码
1.FTSearch搜索: Set dc=db.Ftsearch("name",0) '0位置为最大的查询数,0为所有匹配的文件 FTSearch必须创建数据库索引 Set doc ...
- XML约束——DTD约束
参考: 方立勋老师的讲课视频. 什么是XML约束 •在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束. 为什么需要XML约束 常用的约束技术 •XML DTD • ...
- NYOJ 93 汉诺塔(三)
汉诺塔(三) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度 ...
- redis数据库选择-select
1.关于redis的select命令用法: SELECT index 切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值. 默认使用 0 号数据库. 可用版本: > ...
- 表单美化-原生javascript和jQuery单选按钮(兼容IE6)
最近很多人问怎么美化表单的元素,大家都知道表单元素在各个浏览器中的表现不一,反正也是特别的丑,那么问题就来了,我们能自己设计表单元素的外观么?答案是可以的,现在我们就来试试吧.我们用两种方式来实现这一 ...
- mysql概要(十二)事务
1.特性 2.开启结束取消事务:需要选择支持事务的引擎 3,隐式提交事务: 4.事务的隔离级别:
- Dolphin for Android(v11.5.1[Jetpack:内置])
1. 下载的地址为“http://www.techspot.com/downloads/5927-dolphin-browser-for-android.html” ZC: 由于 Google Pla ...
- JAVA必背面试题和项目面试通关要点
一 数据库 1.常问数据库查询.修改(SQL查询包含筛选查询.聚合查询和链接查询和优化问题,手写SQL语句,例如四个球队比赛,用SQL显示所有比赛组合:举例2:选择重复项,然后去掉重复项:) 数据库里 ...
- JavaSE复习_9 集合框架复习
△列表迭代器也是不支持在迭代的时候添加元素的,只是列表迭代器自己定义了增删的方法而已.迭代器可以看成实在两个元素之间的指针,每当调用next就跳过一个元素并返回刚刚跳过的元素. △HashTable不 ...