一、Nginx
Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。
nginx是一款高性能、轻量级Web服务软件。
nginx具有这些功能:稳定性高、系统资源消耗低、对HTTP并发连接的处理能力高、单台物理服务器可支持30 000~50 000个并发请求。
lamp(linux、Apache、MySQL、php)中httpd不能与php分开,只能出现在同一台主机上。lnmp(Linux、nginx、MySQL、php)支持!!
(一)安装Nginx
1.安装依赖环境
(1)更新yum源[可选]
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
(2)安装依赖包
yum -y install pcre-devel zlib-devel
yum -y install gcc gcc-c++
2.添加nginx用户
useradd -M -s /sbin/nologin nginx
3.安装nginx
tar zxf nginx-1.6.0.tar.gz -C /usr/src
cd /usr/src/nginx-1.6.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
执行完上一步,如果要判断是否成功的话,用(echo $?),如果返回0,则表示无错,否则有错。
make && make install
4.优化执行方式
实现可全局执行,可通过建立软链接或在/etc/profile中添加路径。
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
此时可通过nginx启动,通过killall -9 nginx关闭,查看进程netstat -atp
5.编写启动服务脚本
vim /etc/init.d/nginx
# !/bin/bash
# chkconfig: - 99 20
# description: for nginx
PROG="/usr/local/nginx/sbin/nginx" #启动执行文件
PIDF="/usr/local/nginx/logs/nginx.pid" #存储nginx的进程号的文件
case "$1" in # $1表示第一个参数
start) #第一个参数为start时,执行如下命令
$PROG
;;
stop) #第一个参数为stop时,执行如下命令
kill -s QUIT $(cat $PIDF)
;;
restart) #第一个参数为restart时,执行如下命令
kill -s QUIT $(cat $PIDF)
$PROG
;;
reload) #第一个参数为reload时,执行如下命令
kill -s HUP $(cat $PIDF)
;;
*) #第一个参数为其他时,执行如下命令
echo "Usage $0 ( start | stop | restart | reload )"
exit 1
esac
exit 0
给文件加执行权限
chmod +x /etc/init.d/nginx
6.添加到开机启动项
chkconfig --add nginx
chkconfig --level 35 nginx on
chkconfig --list nginx #查看启动项
7.解读nginx配置文件部分内容 [可选]
执行程序的用户和工作进程的数量,其中工作进程的数量,官方推荐为不超过系统cpu的内核数。
http服务器配置区域,此处的配置相当于全局配置。可在这里面配置多个服务器(虚拟主机)。
声明一台服务器并配置相关参数,其中可以配置location访问根目录(如:http://192.168.8.116/)等
配置访问/时,在服务器上对应的路径,首页
配置访问php文件时,执行的参数。
8.测试
关闭防火墙(service iptables stop ),关闭selinux(setenforce 0)
开启服务
service nginx start
9.开启监控网页
(1)修改nginx配置文件
在要监控的server{…}配置中添加如下location{…}
(2)重启服务并测试
service nginx restart
(二)搭建基于端口的虚拟主机
通过访问同一IP的主机的不同端口,显示不同的网页。
1.基础环境
nginx能够正常访问,即安装(一)中内容做一遍。
2.创建网页文件
cd /usr/local/nginx/html
(1)编写80端口的主页
mkdir su
echo "su" > su/index.html
(2)编写8080端口的主页
mkdir tang
echo "tang" > tang/index.html
3.编辑nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
(1)添加80端口的配置
修改原有部分就行
(2)添加8080端口的配置
由于没有该虚拟主机的,因此在http{…}再添加一个server{…},server内容如下:
4.重启测试
关闭防火墙(service iptables stop ),关闭selinux(setenforce 0)
重启服务
service nginx restart
(三)搭建基于IP的虚拟主机
通过访问不同IP,显示不同的网页。
1.基础环境
nginx能够正常访问,即安装(一)中内容做一遍。
两张网卡。
--------加网卡的配置------------------------
给每一张网卡都设置一个IP。
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth1
vim ifcfg-eth1
将mac、uid那两栏删除,改掉设备名和IP
重启网络
service network restart
-------******end******------------------
2.创建网页文件
cd /usr/local/nginx/html
(1)编写192.168.8.116的主页
mkdir su
echo "su" > su/index.html
(2)编写192.168.8.48的主页
mkdir tang
echo "tang" > tang/index.html
3. 编辑nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
(1)添加192.168.8.116的配置
修改原有部分就行
(2)添加192.168.8.48的配置
由于没有该虚拟主机的,因此在http{…}再添加一个server{…},server内容如下:
4.重启测试
关闭防火墙(service iptables stop ),关闭selinux(setenforce 0)
重启服务
service nginx restart
(四)搭建基于域名的虚拟主机
通过不同域名访问同一主机,根据域名的不同,显示不同的网页。
1.基础环境
nginx能够正常访问,即安装(一)中内容做一遍。
该主机的IP在DNS服务器上有两个域名。(一个IP对应两个域名)
-----------搭建本地DNS主服务器测试----------------------
(1)安装
cd /media/CentOS_6.5_Final/Packages/
rpm -ivh bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm
rpm -ivh bind-chroot-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm
(2)配置
vim /var/named/chroot/etc/named.conf
(3)创建解析文件
cd /var/named/chroot/var/named
vim sutang.com.zone
(4)启动DNS
service named start
2.创建网页文件
cd /usr/local/nginx/html
(1)编写su.sutang.com的主页
mkdir su
echo "su" > su/index.html
(2)编写tang.sutang.com的主页
mkdir tang
echo "tang" > tang/index.html
3. 编辑nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
(1)添加su.sutang.com的配置
修改原有部分就行
(2)添加tang.sutang.com的配置
由于没有该虚拟主机的,因此在http{…}再添加一个server{…},server内容如下:
4.重启测试
关闭防火墙(service iptables stop ),关闭selinux(setenforce 0)
重启服务
service nginx restart
修改主机的网络适配器中的DNS,使其指向192.168.8.116
测试:
(五)配置https
1.基础环境
nginx能够正常访问
2.安装openssl密钥工具
yum -y install openssl openssl-devel
此步安装的openssl-devel依赖包是nginx添加ssl模块必须的东西。
3.nginx加ssl模块
(1)查看原有模块
进入nginx的安装目录下的sbin目录下执行:nginx -V就可以知道了。
[root@sutang ~]# cd /usr/local/nginx/sbin/
[root@sutang sbin]# nginx -V
nginx version: nginx/1.6.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[root@sutang sbin]#
(2)添加ssl模块
在源码包的解压目录下重新配置编译。
cd /usr/src/nginx-1.6.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
此步不要只填新加的模块,还要填写原有模块。必须写全。如果不需要哪一个模块时,只需要在这里取消掉那个模块,然后重新编译配置即可。
make #此处只make不要再执行make install。因为make install是覆盖安装。
(3)将编译好的nginx执行文件覆盖掉原有的nginx
注意:执行该步操作时要停止nginx。
备份原有的nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
将编译好的nginx复制到安装目录的sbin下。
cp /usr/src/nginx-1.6.0/objs/nginx /usr/local/nginx/sbin/nginx #选择覆盖。
(4)确认模块
[root@sutang objs]# cd /usr/local/nginx/sbin/
[root@sutang sbin]# nginx -V
nginx version: nginx/1.6.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
4.本机生成证书文件
(1)生成服务器私钥
mkdir /data
cd /data
[root@sutang data]# openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
..............................++++++
....................................++++++
e is 65537 (0x10001)
Enter pass phrase for server.key: #此处输入你的密码,不小于4个字符
Verifying - Enter pass phrase for server.key: #重新输入密码
[root@sutang data]# ls
server.key #生成的密钥
#des3是算法, -out [filename] 1024是长度,默认 会让你输入密码,不小于4个字符
(2)创建签名请求的证书(CSR):
openssl req -new -key server.key -out server.csr 执行这条命令,会出现输入国家、省等等,下面文字就是说名让你输入什么
C:Country ,单位所在国家,为两位数的国家缩写,如: CN 就是中国
ST 字段: State/Province ,单位所在州或省
L 字段: Locality ,单位所在城市 / 或县区
O 字段: Organization ,此网站的单位名称;
OU 字段: Organization Unit,下属部门名称;也常常用于显示其他证书相关信息,如证书类型,证书产品名称或身份验证类型或验证内容等;
CN 字段: Common Name ,网站的域名;
生成 csr 文件后,提供给 CA 机构,签署成功后,就会得到一個 example.crt 证书文件,SSL 证书文件获得后,就可以在 Nginx 配置文件里配置 HTTPS 了。
-new 创建一个新的证书请求文件 -key filename 指定私钥的输入文件,创建证书请求时需要 -out filename.csr 输出指定的文件名
(3)在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
(4)最后标记证书使用上述私钥和CSR并生成CRT文件
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
[root@sutang data]# ls
server.crt server.csr server.key server.key.org
nginx要使用的文件只有两个:server.crt server.key
5.复制证书文件并修改nginx配置
(1)复制证书文件
cd /usr/local/nginx/
mkdir ssl
cd /data
cp server.crt server.key /usr/local/nginx/ssl
(2)修改配置文件
vim /usr/local/nginx/conf/nginx.conf
取消文件中这些行的注释,并修改部分内容。
6.测试
重启nginx服务
service nginx restart
浏览器访问https://su.sutang.com就行。