nginx:俄罗斯人开发的一套轻量级的HTTP服务器,它是一个高性能的HTTP服务器、反向代理服务器同时也是IMAP/POP3/SMTP服务器。它是一套模块化软件,根据需求来安装相应的模块。
一 源码安装部署nginx
1、官网下载nginx源码包;http://nginx.org(官网)
2、创建用户(nginx为了安全需要指定用户安装,因为避免服务器被×××后拥有root权限)
useradd -s /sbin/nologin nginx
3、源码安装
(1)、tar解包
tar xf nginx-1.10.3.tar.gz
(2)、./configure 配置
cd nginx-1.10.3
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
(3)、编译
make
(4)、安装
make install
备注: --preifx 指定目录,--user 指定用户, --group 指定组 --with-http_ssl_module 支持加密功能 ;具体要安装要安装那些模块需要根据后期要实现什么功能来定,因为模块安装的越多,空间资源占用大,漏洞也多,所以需要模块化安装。
常用命令:
/usr/local/nginx/sbin/nginx #启动
/usr/local/nginx/sbin/nginx -s stop #停止
/usr/local/nginx/sbin/nginx -s reload #重新加载配置文件
/usr/local/nginx/sbin/nginx -V #查看nginx安装信息
为了后期方便使用需要给nginx做一个软连接,后期使用命令时就不需要打绝对路径,直接nginx。
ln -s /usr/local/nginx/sbin/nginx /sbin
安装过程中如出现报错信息,根据报错信息来查看是否缺少依赖包。(gcc、pcre-devel、openssl-devel)
4、启动nginx访问测试
nginx #启动
netstat -nutlp | grep 80
firefox http://nginx服务器地址
netstat命令可以查看系统中启动的端口信息,该命令常用选项如下:
-a显示所有端口的信息
-n以数字格式显示端口号
-t显示TCP连接的端口
-u显示UDP连接的端口
-l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口
-p显示监听端口的服务名称是什么(也就是程序名称)
二 nginx升级
1、官网下载新版本的nginx
2、tar解包
tar xf nginx-1.12.2.tar.gz
3、配置
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
4、编译
make
5、备份旧版本nginx,拷贝新版本nginx,并把内存里正在运行的旧版升级
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginxold
cp /nginx-1.12.2/objs/nginx /usr/local/nginx/sbin/nginx
make upgrade (此命令包含两层意思:1杀死老版本的软件,2升级软件并启动)
6、检测
nginx -V
备注:在源码配置编译安装时,必须要在源码包目录里进行。
三 用户认证
客户端用户访问网页需要输入用户名密码才能访问网页。
配置文件解析
vim /usr/local/nginx/conf/nginx.conf
worker_processes 1; #启动的进程数量
events {
worker_connections 1024; #1个进程允许1024个人访问
}
http {
server { #在nginx主配置文件里面一个server代表一个网站;
listen 80; #监听80端口
server_name localhost; #网站域名
root html; #网站根目录
}
}
1、安装生成用户名密码文件的软件包httpd-tools
yum -y install httpd-tools
htpasswd -c /usr/local/nginx/pass tom #生成叫tom的用户米和密码
New password: #输入密码
Re-type new password: #再次输入密码
cat /usr/local/nginx/pass #查看用户名和密码文件
备注:如果要创建多个用户,此时需要去掉 -c 选项,因为-c为创建的意思,如果不去掉-c当前创建的用户会直接替换原来的用户名和密码
2、修改主配置文件
在server_name 下面添加两行关键字
auth_basic "input youinfo"; #认证提示符
auth_basic_user_file "/usr/local/nginx/pass"; #认证密码文件
3、重新加在nginx
nginx -s reload
4、访问测试
firefox http://nginx服务器地址
三 虚拟主机
作用:一台服务器,一个nginx上面可以运行多个网站
三种类型:基于域名,基于端口,基于ip地址
基于域名的虚拟主机原理:
1、修改配置文件,一个server对应一个网站
vim /usr/local/nginx/conf/nginx.conf
http {
server {
listen 80; #监听80端口
server_name www.a.com; #定义域名
charset utf-8; #网站支持中文(utf-8) 万国编码
location / {
root html; #指定网站根目录
index index.html index.htm; }
}
server {
listen 80; #监听80端口
server_name www.b.com; #定义域名
location / {
root www; #指定网站根目录
index index.html index.htm; }
}
}
备注:要实现基于ip或者端口时,直接在配置文件里面改相应的位置,例如,基于端口 修改listen 8000; 基于ip 修改 listen 192.168.1.2:80 。
另一个网站的页面文件需要在nginx安装目录下创建,要与html同级。
2、创建www文件夹
mkdir /usr/local/nginx/www
在www文件里面,写b网站的页面内容
3、重新加载nginx服务
nginx -s reload
客户端测试
1、编写本地域名解析文件
vim /etc/hosts
ip地址 域名 域名
2、打开浏览器访问
四 SSL虚拟主机
通过私钥和证书对网站进行加密,使用https访问。
nginx要实现此功能需要安装 --with-http_ssl_module模块。
加密算法:
对称加密:AES、DES 主要应用于单机数据加密,加密和解密的密码一样。
非对称加密:RSA、DSA主要应用于网络数据加密,加密和解密密码不一样。
信息摘要:MD5、sha256,主要应用在数据完整性校验、数据秒传等。
1、生成私钥匙与证书,(私钥和证书必须放在conf文件下)
openssl genrsa > cert.key #生成私钥
openssl req -new -x509 -key cert.key > cert.pem #为cert.key生成证书
2、修改配置文件
vim /usr/local/nginx/conf/nginx.conf
server {
listen 443 ssl;
server_name www.b.com;
ssl_certificate cert.pem; #证书
ssl_certificate_key cert.key; #私钥
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root www;
index index.html index.htm;
}
}
3、重新加载nginx
nginx -s reload
客户端使用https访问,会发现地址栏里的域名旁有个×××的锁。证明已经完成。