目录
一、nginx的安装与使用
二、nginx配置实战
1.当首文件不存在--利用nginx服务搭建文件共享服务器
2.虚拟主机概念和类型
3.nginx配置文件规范化
4.别名配置
5.status状态模块:
状态模块说明
6.nginx的日志功能
7.location应用
8.rewrite 模块的使用--地址重写
9.nginx的访问认证
1.1.1
检查软件安装的系统环境:
[root@www ~]# cat /etc/redhat-release
CentOS release 6.10 (Final)
[root@www ~]# uname -r
2.6.32-754.3.5.el6.x86_64
1.1.2
1.安装nginx依赖包(pcre-devel openssl-devel)
yum install -y pcre-devel openssl-devel
pcre:兼容perl语言正则表达式,perl compatible regular expressions
rewirte模块 参数信息(perl方式定义正则表达式)
openssl:ssh---openssh/openssl---https
总结:所有安装依赖软件,后面都要加上-devel
2.下载nginx
wget http://nginx.org/download/nginx-1.10.2.tar.gz
3.解压软件
tar xf nginx-1.10.2.tar.gz
4.创建管理用户www
groupadd www
useradd -g www -M -s /sbin/nologin www
1.1.3
1.编译安装软件
./configure --prefix=/usr/local/nginx-1.10.2 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module
--prefix 表示指定软件安装到哪个目录中,指定目录不存在会自动创建
--user/--group nginx工作进程由哪个用户运行管理
--with-http_stub_status_module 启动nginx状态模块功能(用户访问nginx的网络信息)
--with-http_ssl_module 启动https功能模块
查看返回值,确认配置是否正确:
echo $? 为0则正确
2.编译软件
make
3.编译安装
make install
顺序不能乱
4.创建软连接
ln -s /usr/local/nginx-1.10.2/ /usr/local/nginx
1.1.4
1.精简化nginx.conf主配置内容
egrep -v "#|^$" nginx.conf.default >nginx.conf
启动程序
/usr/local/nginx/sbin/nginx
检查是否启动
ps -ef |grep nginx
检查端口信息
netstat -lntup |grep 80
2.nginx命令简化方法
echo 'export PATH=/usr/local/nginx/sbin:$PATH'>>/etc/profile
source /etc/profile
which nginx
3.nginx目录结构
conf #配置文件保存目录
html#站点目录
logs#nginx服务相关日志目录
sbin#服务命令目录
4.nginx.conf配置文件说明
worker_processes 1; ← worker 进程数量
events { ←事件区块
worker_connections 1024; ←每个worker进程可以处理的连接数
} ←事件区块结束
http { ← HTTP 区块
include mime.types; ←支持的媒体文件
default_type application/octet-stream;←默认的媒体类型
sendfile on; ←高效传输模式
keepalive_timeout 65; ←超时时间
server { ← server 区块
listen 80; ←端口
server_name localhost; ←域名
location / { ←第一个location区块
root html; ←站点目录
index index.html index.htm; ←首页文件
} ←第一个location区块结束
error_page 500 502 503 504 /50x.html; ← 错误信息配置
location = /50x.html { 文件位置
root html; 在哪找:路径
}
} ← server 区块结束
}
5.nginx软件使用命令:
nginx启动方法
/application/nginx/sbin/nginx
停止方法
/application/nginx/sbin/nginx -s stop
重启方法(平滑重启):
/application/nginx/sbin/nginx -s reload
检查配置文件是否正确(修改配置文件后,先检查一下)
/application/nginx/sbin/nginx -t
显示配置参数:
/application/nginx/sbin/nginx -V
1.1.5nginx软件静态页面测试
修改/application/nginx/html中的index.html
hello!www.realxw.com
在/etc/hosts文件中添加域名解析
192.168.231.141 www.realxw.com
本机访问
[root@www html]# curl www.realxw.com
hello!www.realxw.com
通过配置 autoindex on; 参数
使用 autoindex参数,nginx能识别的直接显示,不识别的直接下载
配置完 autoindex on; 参数以后 会显示站点下的文件信息
配置信息如下:
vim /usr/local/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.realxw.com;
location / {
root html;
# index index.html index.htm;
autoindex on;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
在html目录中需要nginx能识别的文件可以删除
重启服务
/application/nginx/sbin/nginx -t
/application/nginx/sbin/nginx -s reload
然后客户端进行访问:
虚拟主机概念
虚拟主机就是把运行在因特网上的服务器分成一台台“虚拟主机”,每台虚拟主机都可以一个网站,可以具有独立的域名,具有完整的网络服务功能(www,ftp,email),同一台主机上的虚拟主机之间是完全独立的,从用户来看,每一台虚拟主机和一台独立的主机完全一样。
利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程。虚拟主机提供了在同一台服务器、同一组Nginx进程上运行多个网站的功能。
所谓虚拟主机,在Web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是ip或端口.具有独立的程序及资源目录,可以独立地对外提供服务供用户访问。
这个独立的站点在配置里是由一定格式的标签段标记的,对于Apache软件来说,一个虚拟主机的标签段通常被包含在以的此
虚拟主机类型:
1)基于域名的虚拟主机类型
以域名来区分不同的虚拟主机
例:www.realxw.com,blog.realxw.com
2)基于端口的虚拟主机类型
以端口来区分不同的虚拟主机
192.168.231.141:80
192.168.231.141:8005
3)基于IP的虚拟主机类型
以域IP来区分不同的虚拟主机
192.168.231.141
192.168.231.145
虚拟主机配置实战:
修改nginx.conf
1)在nginx配置文件中一个完整的server标签就是一个虚拟主机,可以通过在http{}中添加server{}标签实现。
2)修改server_name及对应的网页根目录。
2.1基于域名的虚拟主机:
vim /usr/local/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.realxw.com;
location / {
root html/www;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name blog.realxw.com;
location / {
root html/bbs;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
2.1.2添加完后记得在html目录下添加相应的www,bbs目录,并在目录中添加index.html,并在/etc/hosts文件中添加解析
[root@www ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx-1.10.2/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx-1.10.2/conf/nginx.conf test is successful
[root@www ~]# /usr/local/nginx/sbin/nginx -s reload
2.1.3测试:
[root@www conf]# curl www.realxw.com
www.realxw.com
[root@www conf]# curl bbs.realxw.com
bbs.realxw.com
2.2基于端口的虚拟主机
2.2.1修改配置文件
vim /usr/local/nginx/conf/nginx.conf
server {
listen 81;
server_name bbs.realxw.com;
location / {
root html/bbs;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
2.2.2检查配置文件并重启服务
同上。
2.2.3检查端口信息:
[root@www conf]# netstat -lntup|grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2743/nginx
tcp 0 0 0.0.0.0:81 0.0.0.0:* LISTEN 2743/nginx
2.2.4测试访问:
[root@www conf]# curl bbs.realxw.com:81
bbs.realxw.com
2.3基于IP的虚拟主机:
注意:配置和IP地址相关的都要(-s stop)重启,不能使用平滑重启
2.3.1修改配置文件:
vim /usr/local/nginx/conf/nginx.conf
server {
listen 81;
server_name 192.168.231.141:81;
location / {
root html/bbs;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
2.3.2检查配置文件进行重新开启
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
2.3.3测试:
[root@www conf]# curl 192.168.231.141:81
bbs.realxw.com
1.创建虚拟主机配置文件存储目录
[root@www conf]# pwd
/usr/local/nginx/conf
[root@www conf]# mkdir extra
2.复制主配置文件中的server{}到相应目录下
[root@www conf]# sed -n '10,21p' nginx.conf>extra/www.conf
[root@www conf]# sed -n '22,33p' nginx.conf>extra/bbs.conf
3.修改nginx配置文件使之加载识别虚拟主机配置文件
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include extra/www.conf;
include extra/bbs.conf;
}
4.检查配置文件及重启
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
5.测试:
[root@www extra]# curl bbs.realxw.com
bbs.realxw.com
1.vim www.cof
server {
listen 80;
server_name www.realxw.com realxw.com;
location / {
root html/www;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
2.检查并重启
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
3.修改hosts文件并进行测试:
[root@www extra]# curl realxw.com
www.realxw.com
1.修改配置文件:
vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server{
listen 80;
server_name status.realxw.com;
location / {
stub_status on;
access_log off;
}
}
include extra/www.conf;
include extra/bbs.conf;
}
2.检查并重启
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
修改hosts文件
需要通过zabbix监控服务调取,等以后学了再继续补充。
参数 |
参数说明 |
Active connections |
当前的活动客户端连接数量 |
accepts |
接受客户端连接的总数 |
handled |
处理的连接总数 |
requests |
客户端请求的总数 |
Reading |
nginx正在读请求头的当前连接数。 |
Writing |
nginx正在将响应写回客户端的当前连接数。 |
Waiting |
当前空闲客户端连接数等待一个请求。 |
日志分类:
错误日志:记录nginx运行的错误信息
访问日志:记录用户访问的日志信息
1.配置错误日志,修改主配置文件:
可根据nginx.conf.default进行配置
worker_processes 1;
error_log logs/error.log error;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server{
listen 80;
server_name status.realxw.com;
location / {
stub_status on;
access_log off;
}
}
include extra/www.conf;
include extra/bbs.conf;
}
2.检查并重启
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
3.制造错误:
继续启动nginx服务并查看error.log日志:
tail /usr/local/nginx/logs/error.log
2018/10/26 20:04:49 [emerg] 2965#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/10/26 20:04:49 [emerg] 2965#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2018/10/26 20:04:49 [emerg] 2965#0: bind() to 0.0.0.0:80 failed (98: Address already in use
2.访问日志配置
1.可根据nginx.conf.default进行配置:
vim nginx.conf
worker_processes 1;
error_log logs/error.log error;
events {
worker_connections 1024;
}
http {
include 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"';
sendfile on;
keepalive_timeout 65;
server{
listen 80;
server_name status.realxw.com;
location / {
stub_status on;
access_log off;
}
}
include extra/www.conf;
include extra/bbs.conf;
}
2.修改虚拟主机配置文件:
vim /usr/local/nginx/conf/extra/www.conf
server {
listen 80;
server_name www.realxw.com realxw.com;
location / {
root html/www;
index index.html index.htm;
}
access_log logs/access_www.log main;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
3.测试:
curl www.realxw.com
4.查看日志:
192.168.231.141 - - [26/Oct/2018:20:11:20 +0800] "GET / HTTP/1.1" 200 15 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-"
日志信息说明
参数 |
日志内容 |
含义 |
$remote_addr |
192.168.231.141 |
客户端ip地址 |
- |
- |
|
$remote_user |
- |
显示远程访问者用户信息 |
[$time_local] |
[26/Oct/2018:20:11:20 +0800] |
显示访问时间 |
$request |
GET / HTTP/1.1" |
请求行信息 |
$status |
200 |
状态码 |
$body_bytes_sent |
15 |
响应报文主体内容大小 |
$http_referer |
- |
|
$http_user_agent |
curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2Safari/537.36 |
客户端浏览网页工具信息 |
$http_x_forwarded_for |
- |
反向代理转发 |
详细日志详细说明
Nginx日志变量 |
说明 |
$remote_addr |
记录访问网站的客户端地址;即源IP地址 |
$http_x_forwarded_for |
当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的 前提是代理服务器上也进行了相关的x_forwarded_for设置 可以记录用户真实的IP地址信息 |
$remote_user |
远程客户端用户名称 |
$time_local |
记录访问时间与时区 |
$request |
用户的http请求起始行信息 |
$status |
http状态码,记录请求返回的状态,例如:200 , 404 , 301等 |
$body_bytes_sents |
服务器发送给客户端的响应body字节数 |
$http_referer |
记录此次请求是从哪个链接访问过来的,可以根据referer进行防盗链设置 即表示是哪个网站介绍过来的 |
$http_user_agent |
记录客户端访问信息,例如:浏览器、手机客户端等 |
5.日志的切割
vim logrotate.sh
#!/bin/bash
Dateformat=`date +%Y%m%d`
Basedir="/usr/local/nginx"
Logdir="$Basedir/logs"
Logname="access_www"
[ -d $Logdir ] && cd $Logdir || exit 1
[ -f ${Logname}.log ] || exit 1
mv ${Logname}.log ${Dateformat}_${Logname}.log
$Basedir/sbin/nginx -s reload
要求内网能够访问www.realxw.com/music/资源
外网不能够访问
1.需求处理:
1.修改www.conf配置文件
server {
listen 80;
server_name www.realxw.com realxw.com;
location / {
root html/www;
index index.html index.htm;
}
location /music {
root html/www;
index index.html index.htm;
allow 192.168.231.141;
deny all;
}
access_log logs/access_www.log main;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
2.在html目录下创建music目录,测试访问:
[root@www extra]# curl www.realxw.com/music/
music
3.如果只添加deny 192.168.231.141;
出现错误
[root@www extra]# curl www.realxw.com/music/
403 Forbidden
403 Forbidden
nginx/1.10.2
location语法
location 指令的作用是根据用户请求的URI来执行不同的应用。
locationn使用的语法为
location [=|~|~*|^~] uri {
....
}
location |
[=|~|~*|^~] |
uri |
{....} |
指令 |
匹配标识 |
匹配的网站地址 |
匹配URI后要执行的配 |
~ 与~* 的区别
u ~ 匹配内容区分大小写
u ~* 匹配内容不区分大小写
u !~ 取反
u ^~ 但多个匹配同时存在,优先匹配 ^~匹配的内容;不做正则表达式的检查 (优先处理)
将地址信息进行重写
rewrite regex replacement [flag]
rewrite应用标签:server、location、if
rewrite模块的两个功能
1、实现网站地址跳转
2、实现伪静态
方法一、使用if判断:
vim www.conf
server {listen 80;
server_name www.realxw.com realxw.com;
if ($host ~* "^realxw.com") {
rewrite ^/(.*) http://www.realxw.com/$1 permanent;
}
location / {
root html/www;
index index.html index.htm;
}
location /music {
root html/www;
index index.html index.htm;
deny 192.168.231.141;
}
access_log logs/access_www.log main;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
测试:
[root@www extra]# curl realxw.com -L
www.realxw.com
方法二、再添加一个区块
server {
server_name realxw.com;
rewrite ^/(.*) http://www.realxw.com/$1 permanent;
}
1.修改nginx的相关配置文件
vim extra/www.conf
location / {
root html/www;
index index.html index.htm;
auth_basic "tom training";
auth_basic_user_file /usr/local/nginx/conf/htpasswd;
}
2.创建密码文件:
htpasswd命令需要通过yum install httpd-tools -y 安装
[root@www extra]# htpasswd -c /usr/local/nginx/conf/htpasswd tom
New password:
Re-type new password:
Adding password for user tom
3.更改文件权限
[root@www conf]# chmod 400 htpasswd
[root@www conf]# chown -R www.www htpasswd
4.访问测试:
[root@www conf]# curl www.realxw.com -u tom
Enter host password for user 'tom':
www.realxw.com