nginx及虚拟主机

一、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

nginx及虚拟主机

给文件加执行权限

chmod  +x    /etc/init.d/nginx

6.添加到开机启动项

chkconfig --add nginx

chkconfig --level 35 nginx on

chkconfig --list  nginx                        #查看启动项

7.解读nginx配置文件部分内容 [可选]

执行程序的用户和工作进程的数量,其中工作进程的数量,官方推荐为不超过系统cpu的内核数。

nginx及虚拟主机

http服务器配置区域,此处的配置相当于全局配置。可在这里面配置多个服务器(虚拟主机)。

nginx及虚拟主机

声明一台服务器并配置相关参数,其中可以配置location访问根目录(如:http://192.168.8.116/)等

nginx及虚拟主机

配置访问/时,在服务器上对应的路径,首页

nginx及虚拟主机

配置访问php文件时,执行的参数。

nginx及虚拟主机

8.测试

关闭防火墙(service iptables  stop ),关闭selinux(setenforce  0)

开启服务

service   nginx  start

nginx及虚拟主机

9.开启监控网页

(1)修改nginx配置文件

在要监控的server{…}配置中添加如下location{…}

nginx及虚拟主机

(2)重启服务并测试

service  nginx  restart

nginx及虚拟主机

(二)搭建基于端口的虚拟主机

通过访问同一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端口的配置

修改原有部分就行

nginx及虚拟主机

(2)添加8080端口的配置

由于没有该虚拟主机的,因此在http{…}再添加一个server{…},server内容如下:

nginx及虚拟主机

4.重启测试

关闭防火墙(service iptables  stop ),关闭selinux(setenforce  0)

重启服务

service   nginx  restart

nginx及虚拟主机

nginx及虚拟主机

(三)搭建基于IP的虚拟主机

通过访问不同IP,显示不同的网页。

1.基础环境

nginx能够正常访问,即安装(一)中内容做一遍。

两张网卡。

--------加网卡的配置------------------------

给每一张网卡都设置一个IP。

cd /etc/sysconfig/network-scripts/

cp ifcfg-eth0 ifcfg-eth1

vim ifcfg-eth1

将mac、uid那两栏删除,改掉设备名和IP

nginx及虚拟主机

重启网络

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的配置

修改原有部分就行

nginx及虚拟主机

(2)添加192.168.8.48的配置

由于没有该虚拟主机的,因此在http{…}再添加一个server{…},server内容如下:

nginx及虚拟主机

4.重启测试

关闭防火墙(service iptables  stop ),关闭selinux(setenforce  0)

重启服务

service   nginx  restart

nginx及虚拟主机

nginx及虚拟主机

(四)搭建基于域名的虚拟主机

通过不同域名访问同一主机,根据域名的不同,显示不同的网页。

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

nginx及虚拟主机

(3)创建解析文件

cd /var/named/chroot/var/named

vim sutang.com.zone

nginx及虚拟主机

(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的配置

修改原有部分就行

nginx及虚拟主机

(2)添加tang.sutang.com的配置

由于没有该虚拟主机的,因此在http{…}再添加一个server{…},server内容如下:

nginx及虚拟主机

4.重启测试

关闭防火墙(service iptables  stop ),关闭selinux(setenforce  0)

重启服务

service   nginx  restart

修改主机的网络适配器中的DNS,使其指向192.168.8.116

测试:

nginx及虚拟主机

nginx及虚拟主机

(五)配置https

1.基础环境

nginx能够正常访问

2.安装openssl**工具

yum -y install openssl openssl-devel

此步安装的openssl-devel依赖包是nginx添加ssl模块必须的东西。

3.nginx加ssl模块

(1)查看原有模块

进入nginx的安装目录下的sbin目录下执行:nginx  -V就可以知道了。

[[email protected] ~]# cd /usr/local/nginx/sbin/

[[email protected] 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

[[email protected] 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)确认模块

[[email protected] objs]# cd /usr/local/nginx/sbin/

[[email protected] 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

[[email protected] 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:            #重新输入密码

[[email protected] 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

[[email protected] 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

取消文件中这些行的注释,并修改部分内容。

nginx及虚拟主机

6.测试

重启nginx服务

service  nginx  restart

浏览器访问https://su.sutang.com就行。

nginx及虚拟主机