2019-07-09

                         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';
       }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容