nginx概念
官方网站:http://nginx.org/
nginx服务的特点
nginx软件安装
创建一个安装目录
mkdir /server/tools -p
①yum安装方法
可以按照官方配置文档:
http://nginx.org/en/linux_packages.html#RHEL-CentOS
1.更新nginx官方yum源
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
2.yum安装
yum install -y nginx
3.启动服务
systemctl start nginx
#设置开机自启
systemctl enable nginx
4.web测试访问
web输入服务器的ip: 10.0.0.7
②编译安装
1.下载软件
wget http://nginx.org/download/nginx-0.1.16.tar.gz
2.解压缩
tar xf nginx-0.1.16.tar.gz
3.需要解决软件的安装依赖(openssl-devel pcre-devel)
yum install openssl openssl-devel -y
yum install pcre pcre-devel -y
4.进行配置操作
./configure
--prefix=PATH 指定程序安装路径
--user=USER 设置一个虚拟用户管理worker进程
--group=GROUP 设置一个虚拟用户组管理worker进程
5.进行编译安装
make install
nginx软件目录结构
需注意的目录/文件
/etc/nginx 保存的配置文件
/var/log/nginx 保存的日志文件
/usr/sbin/nginx 保存的命令文件
/usr/share/nginx/html 站点目录
①/etc/logrotata.d目录
实现nginx日志文件定时切割处理
日志切割方法一:利用脚本实现切割
日志切割方法二:利用专用的文件切割程序logrotata
man logrotate可查看命令
编辑配置文件
vim /etc/logrotate.conf
针对全局的配置
对特定的文件(wtmp btmp)进行的设置
systemctl restart
cat /etc/logrotate.d/syslog
cat nginx
②/etc/nginx/mime.types
媒体资源类型
定义了nginx页面可以识别的文件类型
nginx服务的配置文件
/etc/nginx/nginx.conf -->主配置文件
补充:查看nginx 的进程,一共2个
[root@web01 ~]$ ps -ef|grep nginx
root 21119 1 0 21:46 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx 21120 21119 0 21:46 ? 00:00:00 nginx: worker process
root 21658 21626 0 23:26 pts/0 00:00:00 grep --color=auto nginx
master process 主进程 --管理服务是否能够正常运行
worker process 工作进程--处理用户的访问请求
lscpu可用于查看核数CPU(s):
workder进程建议设置等于cpu的核数
/etc/nginx/nginx.d/default --扩展配置文件
nginx服务企业应用
1.利用nginx服务搭建一个网站(www)
cd /etc/nginx/conf.d/
vim www.conf
server {
listen 80;
server_name www.oldboy.com;
location /oldboy {
root /usr/share/nginx/html;
index oldboy.html;
}
}
在conf.d文件夹下新建一个.conf结尾的文件
/etc/nginx/nginx.conf主配置文件中指明了
include /etc/nginx/conf.d/*.conf;
所以会加载conf.d目录下的所有以.conf结尾的配置文件
2.编写html代码文件
在站点目录下,新建html文件
之前配置文件中配置的/ 代表默认的站点目录(/usr/share/nginx/html)
location 需改为/
location定义的是站点目录
若写成
location /oldboy
会去找站点目录(/usr/share/nginx/html)下是否有oldboy目录,然后拿oldboy目录下的首页文件index.html
cd /usr/share/nginx/html
vim oldboy.html
[root@web01 /usr/share/nginx/html]$ cat oldboy.html
老男孩架构
老男孩教育最牛
01
02
03
3.重启nginx服务(平滑重启reload)
有两种方式
systemctl reload nginx
nginx -s reload
nginx --help
查看相关的nginx命令
使用nginx -T进行测试,并且显示所有的nginx配置信息
4.编写DNS配置信息
模拟测试:
使用windows ,hosts文件替代,建立映射关系
C:\Windows\System32\drivers\etc\hosts文件加入如下
10.0.0.7 www.oldboy.com
若是企业环境,需要购买域名,实名认证,备案,配置dns
5.测试访问
通过web浏览器访问hosts文件里配置的网址http://www.oldboy.com/
web访问常见错误
02.测试环境hosts里的DNS信息配置不正确,或者企业环境下的DNS解析配置不正确
利用nginx服务搭建多个网站
①配置文件准备
cd /etc/nginx/conf.d
cp www.conf bbs.conf
cp www.conf blog.conf
[root@web01 /etc/nginx/conf.d]$ vim www.conf
server {
listen 80;
server_name www.oldboy.com;
location / {
root /html/www;
index index.html;
}
}
vim blog.conf
[root@web01 /etc/nginx/conf.d]$ vim blog.conf
server {
listen 80;
server_name blog.oldboy.com;
location / {
root /html/blog;
index index.html;
}
}
vim bbs.conf
[root@web01 /etc/nginx/conf.d]$ vim bbs.conf
server {
listen 80;
server_name bbs.oldboy.com;
location / {
root /html/bbs;
index index.html;
}
}
记得重启服务
systemctl reload nginx
②创建index文件和站点目录
mkdir /html/{www,bbs,blog} -p
for name in {www,bbs,blog}; do echo "10.0.0.7 $name.oldboy.com" >/html/$name/index.html ;done
③编写hosts
windows:
10.0.0.7 www.oldboy.com bbs.oldboy.com blog.oldboy.com
linux:
vim /etc/hosts
172.16.1.7 web01 www.oldboy.com bbs.oldboy.com blog.oldboy.com
④进程测试
linux访问测试:
[root@web01 /etc/nginx/conf.d]$ curl www.oldboy.com
10.0.0.7 www.oldboy.com
[root@web01 /etc/nginx/conf.d]$ curl bbs.oldboy.com
10.0.0.7 bbs.oldboy.com
[root@web01 /etc/nginx/conf.d]$ curl blog.oldboy.com
10.0.0.7 blog.oldboy.com
windows可用浏览器访问测试
企业中虚拟主机访问方式
若: 通服务配置文件中涉及到地址修改,必须重启nginx服务,不能平滑重启
必须用restart 不可以用reload
用reload监听的地址不会改变
netstat -lntup|grep 80 ,可以发现若是用reload 还是监听的配置文件之前的配置
网站页面访问过程
企业中网站的安全配置
①根据用户访问的地址进行控制
需要配置使用nginx访问控制模块 http://nginx.org/en/docs/http/ngx_http_access_module.html
编写配置文件
配置文件编写后使用nginx -t检查语法
修改了etc/hosts里的服务器映射10.0.0.7的映射,
第一次使用10网段
第二次使用172网段,模拟内外网
修改配置文件后reload使其生效
注:
location 外面的信息是: 全网配置信息
location 里面的信息是: 局部配置信息
②根据访问的用户名进行认证
需要使用nginx认证模块,官方地址
http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html
1.编写配制文件
[root@web01 /etc/nginx/conf.d]$ cat www.conf
server {
listen 80;
server_name www.oldboy.com;
location / {
root /html/www;
index index.html;
location / {
auth_basic "closed site";
auth_basic_user_file password/htpasswd;
}
}
}
#记得重启服务是配置文件生效
2.创建密码文件
注:
--需要使用密文
--可使用htpasswd命令进行加密
--htpasswd需要安装httpd-tools
yum install -y httpd-tools
[root@web01 /etc/nginx/conf.d]$ rpm -qf `which htpasswd`
httpd-tools-2.4.6-90.el7.centos.x86_64
#查看命令参数
htpasswd --help
#执行命令
htpasswd -bc ./htpasswd oldboy 123456
[root@web01 /etc/nginx/password]$ cat htpasswd
oldboy:$apr1$TJ9.VEAr$mwJYKPtS9O2d1jrK1I4671
测试访问:
windows测试
linux 测试
curl www.oldboy.com -u oldboy:123456
3.修改密码文件权限/属主
默认权限644.建议修改为600
修改密码文件的属主为www
[root@web01 /etc/nginx/password]$ chmod 600 htpasswd
[root@web01 /etc/nginx/password]$ ls -ltr
total 4
-rw------- 1 root root 45 Mar 17 23:48 htpasswd
[root@web01 /etc/nginx/password]$
chown www htpasswd
用户访问过程是
Windows用户会转换成www用户(worker设置的用户)
所以需要修改密码文件的属主为www