01、yum安装
a 使用官方yum源进行安装 安装的是最新版本 软件目录结构比较标准(推荐)
b 使用非官方yum源进行安装 安装的不是最新版本 目录结构会发生变化
02、编译安装
一、
wget http://nginx.org/download/nginx-1.18.0.tar.gz
PS: 解决软件的依赖 openssl-devel pcre-devel
二、
解压下载好的软件,并进到目录中
三、
编译安装三部曲
a 进行配置操作
./configure
--prefix=PATH set installation prefix
指定程序安装路径
--user=USER set non-privileged user for worker processes
设置一个虚拟用户管理worker进程(安全)
--group=GROUP set non-privileged group for worker processes
设置一个虚拟用户组管理worker进程(安全)
b 进行软件的编译过程:
make 编译
c 编译安装过程
make install
03、yum官方安装方法
一、
vim /etc/yum.repos.d/nginx.repos
[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
二、yum安装nginx
yum -y install nginx
三、启动nginx服务,检查服务是否安装正确
systemctl start nginx
systemctl enable nginx
04、查看软件的目录结构
1)/etc/logrotate.d/
实现nginx日志文件定时切割处理
日志切割方法一:利用脚本实现切割
#!/bin/bash
mv /var/log/nginx/access.log /var/log/nginx/access_$(date +%F).log
systemctl restart nginx
日志切割方法二:利用专用的文件切割程序--logrotate
# rotate log files weekly
weekly -- 定义默认日志切割的周期
# keep 4 weeks worth of backlogs
rotate 4 -- 定义只保留几个切割后的文件
# create new (empty) log files after rotating old ones
create -- 创建出一个相同的源文件
# use date as a suffix of the rotated file
dateext -- 定义角标(扩展名称信息)
# uncomment this if you want your log files compressed
#compress -- 是否是切割后的文件进行压缩处理
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d -- 加载包含/etc/logrotate.d/目录中文件配置
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp { -- 单独对某个文件进行切割配置
monthly
create 0664 root utmp
minsize 1M -- 最小大小为1M,小于1M不进行切割
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
重要文件:
01:/etc/nginx 配置文件
02: /var/log/nginx 日志文件
03:/usr/bin/nginx 命令文件
04:/usr/share/nginx/html 站点目录
图片 附件信息 音频 视频
05、nginx服务配置文件
/etc/nginx/nginx.conf --主配置文件
第一个部分:配置文件珠区域配置
user nginx; --定义worker进程管理的用户
补充:nginx的进程
master process: 主进程 --管理服务是否能够正常运行 boss
worker process: 工作进程 --处理用户的访问请求 员工
worker_processes 1; --定义有几个worker进程 == CPU核数
error_log /var/log/nginx/error.log warn; --定义错误日志路径信息
pid /var/run/nginx.pid; --定义pid文件路径信息
第二个部分:配置文件事件区域
events {
worker_connections 1024; --一个worker进程可以同时接受1024个访问请求
}
第三个部分:配置http区域
http {
include /etc/nginx/mime.types; --加载一个配置文件
default_type application/octet-stream; --指定默认识别文件类型
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
-- 定义日志的格式
access_log /var/log/nginx/access.log main;
-- 指定日志路径
sendfile on;
#tcp_nopush on;
keepalive_timeout 65; --超时时间
#gzip on;
include /etc/nginx/conf.d/*.conf; --加载一个配置文件
}
/etc/nginx/nginx.d/default --扩展配置(虚拟主机配置文件)
第四个部分:server区域信息(配置一个网站 www/bbs/blog -- 一个虚拟主机)
server {
listen 80; --指定监听的端口
server_name localhost; --指定网站域名
root /usr/share/nginx/html; --定义站点目录的位置
index index.html index.htm; --定义首页文件
error_page 500 502 503 504 /50x.html; --优雅显示页面信息
location = /50x.html {
root /usr/share/nginx/html;
}
}
nginx服务的企业应用
一、利用nginx服务搭建一个网站
1、编写一个虚拟主机配置文件
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;
}
}
2、需要获取开发人员编写的网站代码
<html>
<meta charset="utf-8">
<head>
<title>oldboy</title>
</head>
<body>
<table border=1>
<tr> <td>01</td> <td>oldboy</td> </tr>
<tr> <td>02</td> <td>oldgirl</td> </tr>
<tr> <td>03</td> <td>olddog</td> </tr>
</table>
<a href="http://blog.oldboyedu.com">
<img src="oldboy.jpg" />
</a>
</body>
</html>
3、重启nginx服务(平滑重启)
方法一:systemctl reload nginx
方法二:nginx -s reload
nginx命令参数:
-t :test configuration and exit
检查测试配置文件语法
-s :send signal to a master process,quie,reopen,reload
控制服务停止或者重新启动
4、编写DNS配置信息
真实域名:在阿里云上进行DNS解析记录配置
模拟域名:在windows主机的hosts文件中进行配置即可
C:\Windows\System32\drivers\etc\hosts
5、进行测试访问
浏览器中:http://www.oldboy.com
部署搭建网站常见错误:
01. 网站服务配置文件编写不正确
404 错误
解决方法一:修改nginx配置文件---location
解决方法二:在站点目录中创建相应目录或文件数据信息
403 错误
解决方法一:不要禁止访问
解决方法二:没有首页文件
02. DNS信息配置不正确
03. 配置文件修改一定要重启服务;
站点目录中代码文件信息调整,不需要重启服务
二、利用nginx搭建一个多网站(www bss blog)
1、创建多个虚拟主机配置文件
bbs.conf
server {
listen 80;
server_name bbs.oldboy.top;
location / {
root /html/bbs;
index index.html;
}
}
blog.conf
server {
listen 80;
server_name blog.oldboy.top;
location / {
root /html/blog;
index index.html;
}
}
www.conf
server {
listen 80;
server_name www.oldboy.top;
location / {
root /html/www;
index index.html;
}
}
2、创建站点目录和目录中的首页文件
[root@web01 html]mkdir /html/{www,bbs,blog}
[root@web01 html]for name in /html/{www,bbs,blog}; do echo "10.0.0.7 $name.oldboy.top" >> /html/$name/index.html ;done
[root@web01 html]# for name in {www,bbs,blog}; do cat /html/$name/index.html ;done
10.0.0.7 www.oldboy.top
10.0.0.7 bbs.oldboy.top
10.0.0.7 blog.oldboy.top
3、编写host解析文件
10.0.0.7 www.oldboy.top bbs.oldboy.top blog.oldboy.top
4、进行访问测试
1)利用windows进行浏览器访问测试
2)利用linux进行命令访问测试
[root@web02 ~]# curl www.oldboy.top
10.0.0.7 www.oldboy.top
[root@web02 ~]# curl bbs.oldboy.top
10.0.0.7 bbs.oldboy.top
[root@web02 ~]# curl blog.oldboy.top
10.0.0.7 blog.oldboy.top
3)企业中虚拟主机访问方式
a.基于域名的方式进行访问:
b.基于地址的方式进行访问:(只能用指定地址访问) --用于负载均衡+高可用服务
server {
listen 10.0.0.7:80;
server_name www.oldboy.top;
location / {
root /html/www;
index index.html;
}
}
PS:服务配置文件中涉及到地址修改,必须重启nginx服务,不能平滑重启
c.基于端口的方式进行访问:
server {
listen 8080;
server_name www.oldboy.top;
location / {
root /html/www;
index index.html;
}
}
网站页面的访问原理:
1、将域名进行解析 www.oldboy.top ------ 10.0.0.7
2、建立TCP的链接(四层协议)
10.0.0.7 目标端口 80
3、根据应用层HTTP协议发出请求
请求报文:hosts:www.oldboy.top
4、没有相同域名的server主机,会找满足端口要求的第一个主机
显示主机的网站页面
四、企业中网站的安全访问配置
a.根据用户访问的地址进行控制
10.0.0.0/24 www.oldboy.top/AV/不能访问
172.16.1.0/24 www.oldboy.vom/AV/可以访问
nginx访问模块:ngx_http_access_module
举例配置:
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
指令用法
Syntax: deny address | CIDR | unix: | all;
Default: —
Context: http, server, location, limit_except
1、编写配置文件
server {
listen 80;
server_name www.oldboy.top;
location / {
root /html/www;
index index.html;
}
location /AV {
root /html/www;
index index.html;
deny 10.0.0.0/24;
allow 172.16.1.0/24;
}
}
补充:
location外面的信息,全局配置信息
location里面的信息,局部配置信息
b.根据用户访问进行认证
nginx认证模块:module ngx_http_auth_basic_module
举例配置:
location / {
auth_basic "closed site"; ---开启认证功能
auth_basic_user_file conf/htpasswd; ---加载用户密码文件
}
1、编写虚拟主机配置文件
server {
listen 80;
server_name www.oldboy.top;
location / {
root /html/www;
index index.html; auth_basic "test";
auth_basic_user_file password/htpasswd;
}
2、创建密码文件(文件中密码信息必须是密文的)
htpasswd 创建一个有密文信息的密码文件
htpasswd命令参数说明:
-c Create a new file. ***
创建一个密码文件
-n Don't update file; display results on stdout.
不会更新文件;显示文件内容信息
-b Use the password from the command line rather than prompting for it. ***
免交互方式输入用户密码信息
-i Read password from stdin without verification (for script usage).
读取密码采用标准输入方式,并不做检查
-m Force MD5 encryption of the password (default).
md5的加密算法
-2 Force SHA-256 crypt() hash of the password (secure).
-5 Force SHA-512 crypt() hash of the password (secure).
-B Force bcrypt aencryption of the password (very secure).
使用bcrypt对密码进行加密
-C Set the computing time used for the bcrypt algorithm
(higher is more secure but slower, default: 5, valid: 4 to 31).
使用bcrypt algorithm对密码进行加密
-r Set the number of rounds used for the SHA-256, SHA-512 algorithms
(higher is more secure but slower, default: 5000).
-d Force CRYPT encryption of the password (8 chars max, insecure).
密码加密方式
-s Force SHA-1 encryption of the password (insecure).
加密方式
-p Do not encrypt the password (plaintext, insecure).
不进行加密
-D Delete the specified user.
删除指定用户
-v Verify password for the specified user.
修改密码文件权限
chmod 600 /etc/nginx/htpasswd
500 Internal Server Error
01.内部程序代码编写有问题
02.程序服务中文件权限不正确
curl命令参数:
-u, --user USER[:PASSWORD] Server user and password
[root@web02 ~]# curl www.oldboy.top -u oldboy
Enter host password for user 'oldboy':
10.0.0.7 www.oldboy.top