文章目录
Nginx简介
- Nginx(“engine X”)
– 是俄罗斯人编写的十分轻量级的HTTP服务器
– 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器 - 官方网站:http://nginx.org/
Nginx软件安装
yum -y install gcc pcre-devel openssl-devel #安装依赖
tar -xf nginx-1.10.3.tar.gz
useradd nginx -s /sbin/nologin
cd nginx-1.10.3 \
>./configure -->prefix=/user/local/nginx \ #默认安装就是这个
>--user=nginx \ #默认启动用户是Nobody
>--group=nginx \
>--with-http_ssl_module #支撑剂加密功能
make && make install
nginx查看默认安装模块
cat nginx-1.10.3/auto/options | grep YES #筛选出默认安装模块
Nginx进程管理
- 启动Nginx服务
/usr/local/nginx/sbin/nginx
- 常用选项
– -V:查看编译参数
– -c:指定配置文件,启动服务
– -s stop:关闭服务
– -s reload :重新加载配置文件 - 日志管理
ls /usr/local/nginx/logs/
access.log error.log nginx.pid
- 查看服务相关进程及端口信息
ps aux | grep nginx
root 31661 0.0 0.0 25004 776 ? Ss 20:29 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 31662 0.0 0.1 25420 1736 ? S 20:29 0:00 nginx: worker process
root 31897 0.0 0.0 112704 972 ttyS0 S+ 20:34 0:00 grep --color=auto nginx
ss -pantu | grep nginx
tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=31662,fd=6),("nginx",pid=31661,fd=6))
Nginx配置分析
- 配置文件结构
全局配置:/usr/local/nginx/conf/nginx.conf
http{
.....
server{
......
location/{
......
}
}
}
- 配置容器
http{
.....
server{
listen 80;
server_name localhost:
localtion/{
root html;
index index.html index.htm;
}
}
}
用户认证
默认安装模块:ngx_http_auth_basic_module
- 编辑配置文件
.. ..
server {
listen 80;
server_name localhost;
auth_basic "Input Password:"; #认证提示符信息
auth_basic_user_file "/usr/local/nginx/pass"; #认证的密码文件
#也可以加载某个location{}里面
location / {
root html;
index index.html index.htm;
}
}
- 生成密码文件,创建用户及密码
使用htpasswd命令创建账户文件,需要确保系统中已经安装了httpd-tools。
yum -y install httpd-tools
htpasswd -c /usr/local/nginx/pass tom #创建密码文件
New password:
Re-type new password:
Adding password for user tom
htpasswd /usr/local/nginx/pass jerry //追加用户,不使用-c选项
New password:
Re-type new password:
Adding password for user jerry
cat /usr/local/nginx/pass
- 重新加载配置
/usr/local/nginx/sbin/nginx -s reload //重新加载配置文件
#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
Nginx虚拟主机
三种模式虚拟主机
- 基于域名的虚拟主机
- 基于端口的虚拟主机
- 基于IP的虚拟主机
基于域名的虚拟主机
- 大致结构
server{
listen 80;
server_name web1.lg.com;#域名1
.....
}
server{
listen 80:
server_name web2.lg.com;#域名2
....
}
- 详细修改配置文件
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80; //端口
server_name www.a.com; //域名
auth_basic "Input Password:"; //认证提示符
auth_basic_user_file "/usr/local/nginx/pass"; //认证密码文件
location / {
root html; //指定网站根路径
index index.html index.htm;
}
}
… …
server {
listen 80; //端口
server_name www.b.com; //域名
location / {
root www; //指定网站根路径
index index.html index.htm;
}
}
- 创建网站根目录及对应首页文件
mkdir /usr/local/nginx/www
echo "www" > /usr/local/nginx/www/index.html
- 客户端测试
修改客户端主机的/etc/hosts文件,进行域名解析
vim /etc/hosts
192.168.4.5 www.a.com www.b.com
登录客户端主机进行测试
firefox http://www.a.com #输入密码后可以访问
firefox http://www.b.com #直接访问
基于端口的虚拟主机
server{
listen 8080; #端口1
server_name web1.lg.com; #域名
......
}
server{
listen 8000; #端口2
server_name web1.lg.com;
....
}
基于IP的虚拟主机
server{
listen 192.168.0.1:80; #端口
server_name web1.lg.com; #域名
.....
}
server{
listen 192.168.0.2:80;
server_name web1.lg:com;
.....
}
SSL虚拟主机
源码安装Nginx时必须使用–with-http_ssl_module参数,启用加密模块,对于需要进行SSL加密处理的站点添加ssl相关指令(设置网站需要的私钥和证书)。
加密算法一般分为对称算法、非对称算法、信息摘要。
对称算法有:AES、DES,主要应用在单机数据加密。
非对称算法有:RSA、DSA,主要应用在网络数据加密。
信息摘要:MD5、sha256,主要应用在数据完整性校验。
- 生成私钥与证书
cd /usr/local/nginx/conf
openssl genrsa > cert.key #生成私钥
openssl req -new -x509 -key cert.key > cert.pem #生成证书
- 修改Nginx配置文件,设置加密网站的虚拟主机
vim /usr/local/nginx/conf/nginx.conf
… …
server {
listen 443 ssl;
server_name www.c.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 html;
index index.html index.htm;
}
}
- 重新加载配置
/usr/local/nginx/sbin/nginx -t #检测配置文件是否正确
/usr/local/nginx/sbin/nginx -s reload
#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)