Apache优点:
Apache的兼容性和稳定性都是非常强
Apache 的模块比 Nginx/Lighttpd丰富
Apache在处理动态请求比Nginx/Lighttpd更有优势
缺点:
属于重量级web服务器(重量级主要是在软件包的大小上比较大,软件的耦合度大)
在速度、性能不及其他轻量级web服务器,并且消费内存较高。使用传统的select模型,比较稳定的Prefork模式为多进程模式,需要经常派生子进程。所以消耗的cpu等服务器资源比较大。
Nginx优点:
轻量级,比apache 占用更少的内存及资源
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型,在高并发下nginx 能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简单
有Lighttpd的性能,且更稳定,没有其内存泄露问题;
处理静态文件,索引文件以及自动索引,打开文件描述符缓冲。
缺点:
nginx处理动态请求是鸡肋,不如Apache;
建议方案:
Apache 后台服务器(主要处理php及一些动态请求);Nginx 前端服务器(高并发请求、静态资源、负载均衡、反向代理和前端Cache等)。
环境:
一台私网管理机ip:192.168.1.11 一台服务器私网ip:192.168.1.11 公网ip:202.106.0.1 一台公网客户ip:202.106.0.20
需求:
1:公网客户可以访问公司主页www.sw.com和bbs.sw.com
2:内网管理机可以用密码通过ip或者端口登录网站后台m.sw.com
实现步骤:
1:服务器上安装nginx源码包程序,设置为开机启动,备份主配置文件
[[email protected] ~]# useradd -M -s /sbin/nologin nginx //添加系统用户nginx,无家目录和禁止登录
[[email protected] ~]#yum -y install gcc gcc-c++ make pcrc-devel openssl-devel //安装编译环境开发包
[[email protected] ~]#mkdir /nginx //创建存放文件夹
[[email protected] nginx-0.8.55]# ./configure --prefix=/nginx \ //转换源码,指定安装目录
>--user=nginx --group=nginx //指定进程属主,属组
>--with-http_stub_status_module --with-http_ssl_module; //加载查看状态模块,ssl模块
[[email protected] nginx-0.8.55]# make && make install //编译安装
[[email protected] ~]# vim /etc/rc.local //添加到开机启动脚本
/nginx/sbin/nginx
[[email protected] ~]# cp -p /nginx/conf/{nginx.conf,nginx.conf.bak} //备份主配置文件
2:配置主配置文件,重启服务
[[email protected] ~]# vim /nginx/conf/nginx.conf
... 3 worker_processes 1; //进程个数,建议和cpu核数相同 ... 12 events { 13 worker_connections 1024; //每进程并发连接数 14 } ... 17 http { ... 118 server { 119 listen 202.106.0.1:80; //监听公网80端口 120 server_name www.sw.com; //虚拟主机www.sw.com 121 location / { 122 root /nginx/html/www; //之前先手动创建首页存放目录/nginx/html/www 123 index index.html index.htm; 124 } 125 } 126 server { 127 listen 202.106.0.1:80; 128 server_name bbs.sw.com; //虚拟主机bbs.sw.com 129 location / { 130 root /nginx/html//bbs; //之前先手动创建首页存放目录/nginx/html/bbs 131 index index.html index.htm; 132 } 133 } 134 server { 135 listen 192.168.1.11:8080; //监听内网192.168.1.11:8080 136 server_name m.sw.com; //后台虚拟主机m.sw.com 137 location / { 138 root /nginx/html//m; //之前先手动创建首页存放目录/nginx/html/m 139 index index.html index.htm; 140 allow 192.168.1.111; //只允许内网192.168.1.111访问网页后台 141 deny all; //拒绝其他所有 142 auth_basic "请输入用户名密码"; //弹出用户认证时的提示信息 143 auth_basic_user_file /nginx/user.pw; //指定用户认证文件 144 } 145 } 146 }
[[email protected] ~]#/nginx/sbin/nginx -s stop //停止服务
[[email protected] ~]#/nginx/sbin/nginx //启动服务
[[email protected] ~]#htpasswd -c /nginx/user.pw sw //创建用户名密码文件(如此命令没有就安装httpd包)
附:平滑升级nginx
1:转换源码,编译
[[email protected] nginx-1.0.5]# ./configure --prefix=/nginx --user=nginx --group=nginx \
>--with-http_stub_status_module --with-http_ssl_module; //转换源码,要和低版本参数相同
[[email protected] nginx-1.0.5]# make
2:替换低版本启动脚本
[[email protected] nginx-1.0.5]#mv /nginx/sbin/{nginx,nginx8.55}
[[email protected] nginx-1.0.5]#cp -p objs/nginx /nginx/sbin
3:平滑升级
[[email protected] nginx-1.0.5]# make upgrade //从容结束旧版本进程,替换为新版本