24.web服务(nginx)

nginx概念

官方网站:http://nginx.org/

image.png

nginx服务的特点


image.png

image.png

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软件目录结构

image.png

image.png

需注意的目录/文件
/etc/nginx 保存的配置文件
/var/log/nginx 保存的日志文件
/usr/sbin/nginx 保存的命令文件
/usr/share/nginx/html 站点目录

①/etc/logrotata.d目录
实现nginx日志文件定时切割处理
日志切割方法一:利用脚本实现切割

image.png

日志切割方法二:利用专用的文件切割程序logrotata
man logrotate可查看命令
编辑配置文件
vim /etc/logrotate.conf
针对全局的配置


image.png

对特定的文件(wtmp btmp)进行的设置


image.png

systemctl restart

cat /etc/logrotate.d/syslog
cat nginx

②/etc/nginx/mime.types
媒体资源类型
定义了nginx页面可以识别的文件类型

nginx服务的配置文件

/etc/nginx/nginx.conf -->主配置文件


image.png

image.png

image.png
补充:查看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的核数

image.png

/etc/nginx/nginx.d/default --扩展配置文件


image.png

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配置信息  

image.png

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/

image.png

web访问常见错误

image.png

image.png

02.测试环境hosts里的DNS信息配置不正确,或者企业环境下的DNS解析配置不正确


image.png

利用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可用浏览器访问测试

企业中虚拟主机访问方式

image.png

若: 通服务配置文件中涉及到地址修改,必须重启nginx服务,不能平滑重启
必须用restart 不可以用reload
用reload监听的地址不会改变
netstat -lntup|grep 80 ,可以发现若是用reload 还是监听的配置文件之前的配置

image.png

网站页面访问过程

image.png

企业中网站的安全配置

①根据用户访问的地址进行控制
需要配置使用nginx访问控制模块 http://nginx.org/en/docs/http/ngx_http_access_module.html

image.png

编写配置文件


image.png

配置文件编写后使用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

image.png

1.编写配制文件


image.png
[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


image.png

测试访问:

windows测试


image.png

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


image.png

你可能感兴趣的:(24.web服务(nginx))