nginx程序企业应用方法
(1)如何搭建多个网站 www bbs blog
第一个历程:创建多个网站主机文件
[root@web01 ~]# cd /etc/nginx/conf.d/
[root@web01 conf.d]# cp www.conf bbs.conf
[root@web01 conf.d]# cp www.conf blog.conf
[root@web01 conf.d]# vim bbs.conf
server {
listen 80;
server_name bbs.oldboy.com;
▽ location / {
root /html/bbs;
index index.html index.htm;
}
"bbs.conf" 12L, 290C written
[root@web01 conf.d]# vim blog.conf
server {
listen 80;
server_name blog.oldboy.com;
root /html/blog;
index index.html index.htm;
}
error_page 404 500 502 503 504 https://www.baidu.com/search/error.html;
#location = /oldboy.jpg {
# root /html;
#}
"blog.conf" 12L, 292C written
[root@web01 conf.d]# cat www.conf bbs.conf blog.conf
server {
listen 80;
server_name www.oldboy.com;
location / {
root /html/www;
index index.html index.htm;
}
error_page 404 500 502 503 504 https://www.baidu.com/search/error.html;
#location = /oldboy.jpg {
# root /html;
#}
}
server {
listen 80;
server_name bbs.oldboy.com;
location / {
root /html/bbs;
index index.html index.htm;
}
error_page 404 500 502 503 504 https://www.baidu.com/search/error.html;
#location = /oldboy.jpg {
# root /html;
#}
}
server {
listen 80;
server_name blog.oldboy.com;
location / {
root /html/blog;
index index.html index.htm;
}
error_page 404 500 502 503 504 https://www.baidu.com/search/error.html;
#location = /oldboy.jpg {
# root /html;
#}
}
第二个历程:创建不同网站站点目录/创建网站页面信息index.html(www.oldboy.com)
[root@web01 conf.d]# mkdir /html/{www,bbs,blog} -p
[root@web01 conf.d]# for name in {www,bbs,blog};do echo "$name.oldboy.com" >/html/$name/index.html;done
[root@web01 conf.d]# for name in {www,bbs,blog};do cat /html/$name/index.html;done
www.oldboy.com
bbs.oldboy.com
blog.oldboy.com
[root@web01 conf.d]#
第三个历程:配置DNS解析信息
10.0.0.7 www.oldboy.com bbs.oldboy.com blog.oldboy.com
第四个历程:重启nginx程序
编译安装重启方法:
[root@web03 ~]# /application/nginx/sbin/nginx
[root@web03 ~]# ps -ef|grep nginx
root 6156 1 0 16:34 ? 00:00:00 nginx: master process /application/nginx/sbin/nginx
nobody 6157 6156 0 16:34 ? 00:00:00 nginx: worker process
root 6161 6100 0 16:35 pts/2 00:00:00 grep --color=auto nginx
[root@web03 ~]#
yum安装:
方法一:使用systemctl命令重启nginx程序
[root@web01 conf.d]# systemctl restart/reload nginx
方法二:利用nginx命令重启nginx程序
nginx
nginx -s reload
nginx -t #检查配置文件语法
如和确认语法没有问题
1-每个指令参数编写正确/位置放置正确
2-每个区域信息需要有一对花括号
3-每个指令参数最后有分号结尾
PS:以上两种方式不要混用
补充:网站页面异常排错思路
01:检查DNS解析信息(注:新开一个窗口)
[c:\~]$ ping bbs.oldboy.com
正在 Ping www.oldboy.com [10.0.0.7] 具有 32 字节的数据:
来自 10.0.0.7 的回复: 字节=32 时间<1ms TTL=64
来自 10.0.0.7 的回复: 字节=32 时间<1ms TTL=64
10.0.0.7 的 Ping 统计信息:
数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
02:检查HTTP请求信息 (抓包检查)
03:检查HTTP响应信息 (抓包检查)
(2)如何访问网站页面
基于域名访问
基于端口访问
[root@web01 conf.d]# vim www.conf
server {
listen 8080; #修改端口号
server_name www.oldboy.com;
location / {
root /html/www;
index index.html index.htm;
}
error_page 404 500 502 503 504 https://www.baidu.com/search/error.html;
#location = /oldboy.jpg {
# root /html;
#}
}
"www.conf" 12L, 292C written
[root@web01 conf.d]# systemctl reload nginx
访问原理:
01.和指定IP地址建立连接 ---10.0.0.7
02.向指定端口发出请求 ---80
03.找寻匹配80端口的主机信息
04.匹配用户的请求主机信息
基于地址访问
[root@web01 conf.d]# cat www.conf
server {
listen 172.16.1.7:80;
server_name www.oldboy.com;
location / {
root /html/www;
index index.html index.htm;
}
error_page 404 500 502 503 504 https://www.baidu.com/search/error.html;
#location = /oldboy.jpg {
# root /html;
#}
}
[root@web01 conf.d]#
注意事项:nginx程序设计到IP地址的修改,都需要重启服务(不是平滑重启)
[root@web01 conf.d]# systemctl reload nginx
[root@web01 conf.d]# curl 172.16.1.7
bbs.oldboy.com
[root@web01 conf.d]# netstat -lntup|grep nginx
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1833/nginx: master
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1833/nginx: master
解决方法:用restart重启服务
[root@web01 conf.d]# systemctl restart nginx
[root@web01 conf.d]# netstat -lntup|grep nginx
tcp 0 0 172.16.1.7:80 0.0.0.0:* LISTEN 1892/nginx: master
[root@web01 conf.d]# curl 172.16.1.7
www.oldboy.com
(3)利用nginx显示网站目录索引
第一个历程:将首页文件进行删除
[root@web01 www]# ll
total 4
-rw-r--r-- 1 root root 15 Jul 10 16:33 index.html
[root@web01 www]# mv index.html{,.bak}
[root@web01 www]# ll
total 4
-rw-r--r-- 1 root root 15 Jul 10 16:33 index.html.bak
第二个历程:修改配置文件添加指令,建立目录索引
server {
listen 80;
server_name www.oldboy.com;
access_log /var/log/nginx/access_oldboy.log oldboy;
location / {
root /html/www;
index index.html index.htm;
autoindex on; ---当首页文件不存在,会显示站点目录索引结构信息
}
error_page 404 500 502 503 504 https://www.baidu.com/search/error.html;
#location = /oldboy.jpg {
# root /html;
"www.conf" 14L, 371C written
(4)利用nginx实现网络安全访问控制
(1)基于用户的访问信息进行控制
第一个历程:部署站点目录环境 images 允许 av禁止
images 允许 oldboy.jpg
av 禁止 oldboy.html
[root@web01 conf.d]# cd /html/www/
[root@web01 www]# mkdir images av
第二个历程:编辑配置文件
[root@web01 conf.d]# cat www.conf
server {
listen 80;
server_name www.oldboy.com;
access_log /var/log/nginx/access_oldboy.log oldboy;
location / {
root /html/www;
index index.html index.htm;
autoindex on;
charset UTF-8;
}
location /images {
allow all;
root /html/www;
index oldboy.jpg index.html index.htm;
}
location /av {
allow 10.0.0.1;
deny all;
root /html/www;
}
}
[root@web01 conf.d]#
(2)基于用户的认证信息进行控制
第一个历程:创建密码文件信息
[root@web01 conf.d]# htpasswd -bc /etc/nginx/nginx.password oldboy oldboy123
Adding password for user oldboy
[root@web01 conf.d]# cat /etc/nginx/nginx.password
oldboy:$apr1$KzlvElme$jIoFDiewj3Vv50hrxLpW41
[root@web01 conf.d]#
第二个历程:编写主机配置文件
[root@web01 conf.d]# cat www.conf
server {
listen 80;
server_name www.oldboy.com;
access_log /var/log/nginx/access_oldboy.log oldboy;
auth_basic "oldboy61";
auth_basic_user_file /etc/nginx/nginx.password;
location / {
root /html/www;
index index.html index.htm;
autoindex on;
charset UTF-8;
}
}
PS:500 Internal Server Error
01:编写的代码信息不正确
02:web服务权限有问题
[root@web01 nginx]# chown www nginx.password
这样就可以啦
(5)利用nginx实现网站状态监控
第一个历程:编写监控网站主机配置文件
[root@web01 conf.d]# cp www.conf stat.conf
[root@web01 conf.d]# vim stat.conf
server {
listen 80;
auth_basic "oldboy61";
listen 80;
server_name stat.oldboy.com;
location / {
stub_status ;
}
}
页面监控信息
Active connections: 1 -----总的激活并发链接数
accepts -----总的接收链接数信息
handled -----总的处理链接数信息
requests -----总的请求数量
Reading: 读取请求报文数量
Writing:回复响应报文数量
Waiting:等待队列
取出指定信息进行监控
[root@web01 conf.d]# curl -H host:stat.oldboy.com 172.16.1.7 2>/dev/null|awk 'NR==3{pront $1}'
(6)nginx程序日志说明
错误日志:记录服务常见错误
01:服务运行错误信息
02:用户访问页面的错误
如何配置:
error_log /var/log/nginx/error,log warn (记录错误级别)
debug ---调试级别 产生的日志信息最多
info ---信息级别
notice ---通知级别
warn ---警告级别
error ---错误级别
crit ---严重级别
alertr ---非常严重级别
emerg ---灾难级别 产生的日志信息最少
访问日志:记录用户访问信息
01:记录用户访问网站什么信息
02:记录访问访问网站用户信息
如何配置:
[root@web01 images]# cat /etc/nginx/nginx.conf
user www;
worker_processes 2;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
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"';
log_format oldboy '$remote_addr [$time_local] "$request" oldboy'
#access_log /var/log/nginx/access_oldboy.log oldboy;
sendfile on;
#tcp_nopush on;
keepalive_timeout 0;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
[root@web01 images]#
nginx默认变量
$remote_addr ----访问网站客户端源ip地址
$remote_user ----表示认证用户名称信息0
[$time_local] ----定义时间信息
$request ----显示请求行信息
$status ----显示状态码
$body_bytes_sent ----回复数据大小(流量)信息 字节
$http_referer ----显示用户访问网站客户端程序(电脑 手机)
三nginx程序区域模块 -location
功能:匹配不同的uri信息,做出相应处理
如何应用:
[root@web01 conf.d]# cat www.conf
server {
listen 80;
server_name www.oldboy.com;
location = / {
return 301;
}
location / {
return 302;
}
location /documents/ {
return 404;
}
location ^~ /images/ {
return 502;
}
location ~* \.(gif|jpg|jpeg)$ {
return 520;
}
}
[root@web01 conf.d]#
规范站点目录结构信息
[root@web01 conf.d]# cat www.conf
server {
listen 80;
server_name www.oldboy.com;
location ~* \.jpg$ {
root /html/www/jpg;
}
location ~* \.png$ {
root /html/www/png;
}
location / {
root /html;
index index.html;
}
}
[root@web01 conf.d]#
四:nginx程序重写功能说明 rewrite url/uri/伪静态
(1)跳转配置中last与break区别对比示例
[root@web01 conf.d]# cat www.conf
server {
listen 80;
server_name www.oldboy.com;
root /html;
location ~ ^/break/ {
rewrite ^/break/ /test/ break;
}
location ~ ^/last/ {
rewrite ^/last/ /test/ last;
}
location /test/ {
default_type application/json;
return 200 'ok';
}
}