nginx服务配置

贯彻WWW服务的常用web软件:nginx、apache。

nginx服务配置 表达,nginx服务配置

第③章 常用的软件

经文流行的web组合lamp(linux apache mysql php)、lnmp(linux nginx mysql
php)。

1.1 常用来提供静态服务的软件

图片 1 
Apache :这是中型小型型Web服务的主流,Web服务器中的老二弟,

图片 2 
Nginx :大型网站Web服务的主流,曾经Web服务器中的初生牛犊,现已长成。

图片 3 
Nginx 的分支 Tengine (
http://tengine.taobao.org/)目前也在飞速发展•

图片 4 
Lighttpd :那是一个不溫不火的理想 Web软件,社区不活跃,静态解析效能很高.在 Nginx
流行前,它是大并发静态业务的首要接纳,国内百度贴吧、豆瓣等重重网站都有Lighttpd奋斗的身彩”  

Nginx本人是一款静态(html、js、css、jpg等)的www软件,不可能分析动态的PHP、JSP、DO。

1.2 常用来提供动态服务的软件

图片 5 
PHP ( 法斯特CGI
):大中型小型型网站都会选取,动态网页语言PHP程序的分析容器。它可协作Apache解析动态程序,可是,那里的PHP不是FastCGI守护进程横式,而是mod_php5.so ( module)也可卓殊Nginx解析动态程序,此时的PHP常用法斯特CGI守护进度方式提供劳动。

图片 6 
Tomcat :中型小型公司动态Web服务主流,互连网Java容器主流(如jsp、do )

图片 7 
Resin :大型动态Web服务主流,网络Java容器主流(如jsp、do )

图片 8 
IIS ( Internet information services
):微软 windows 下的
Web 服务软件(如 asp、aspx )

最大的风味:

第2章 nginx 软件

① 、静态小文件(1M),协理高产出,同时占用的能源很少。三千0涌出,十二个经过,内部存款和储蓄器消耗150M。

2.1 软件介绍

一经你听大人讲或使用过
Apache软件,那么高效就会熟悉Nginx软件,与 Apache软件接近, Nginx ( “engme
x”)是贰个开源的,帮衬高质量、高并发的
WWW服务器和代办服务软件。它是由俄罗丝人 伊戈尔Sysoev开发的,最初被选拔在勘罗丝的特大型网站
www.rambler.ru 上,后来小编将源代码以类BSD许可证的款式开源出来供中外应用。

Nginx因存有高并发(尤其是静态能源)占用系统能源少等特征,且功能丰裕而日趋流行起来。

在作用接纳发面,Nginx不但是3个两全其美的Web服务软件,还装有反向代理负载均衡效能和缓存服务效益。在反向代理负载均衡成效方面,它相仿于名牌的LVS负载均衡及Haproxy等正规代理软件,不过Nginx安插起来更为简易、方便;在缓存服务效果方面,它又好像于Squid等专业的缓存服务软件。

Nginx 可以运营在
UNIX、Linux、BSD、Mac 0S X、Solaris,以及 Microsoft Windows
等操作系统中。随着Nginx在国内许多大型网站中的稳定连忙运维,近两年它也日趋被越来越多的中型小型型网站所利用。当前风靡的Nginx Web组合被称呼LNMP或LEMP(即Linux Nginx MySQL PHP),个中 LNMP
里的 N 取自Nginx (
“engine x” )

Nginx 的官方介绍见 http://nginx.org/en

 

Nginx在windows、linux、unix都可以。

2.2 NGINX 软件个性

Nginx服务最大的功能:

2.2.1 HTTP服务器的特性及亮点:

u  扶助高产出:能支撑几万并发连接(尤其是静态小文件工作环境)

u  能源消耗少:在3万并发连接下,开启13个Nginx线程消耗的内部存储器不到200MB

u  能够做HTTP反向代理及加快缓存、即负载均衡功能,内置对HighlanderS节点服务器健检作用,这一定王宛平规的Haproxy软件或LVS的职能。

u  具备Squid等专业缓存软件等的缓存功效。

u  扶助异步网络I/O事件横型epoll(Linux2.6+)

一 、www web服务、邮件服务、邮件代理。

2.2.2 nginx成效特色

Ø  web网站服务

Ø  反向代理负载均衡(nginx /lvs /haproxy)

Ø  nginx缓存服务(memcache
/redis /mongodb)

② 、负载均衡(反向代理proxy)。

2.3 nginx软件的商家效益利用

业务类型

应用方案

静态业务

若是高并发场景,尽量采用Nginx或Lighttpd,二者首选Nginx

动态业务

理论上采用Nginx和Apache均可,建议选择Nginx,为了避免相同业务的服务软件多样化,增加额外维护成本。动态业务可以由Nginx兼做前端代理,再根据页面元素的类型或目录,转发到后端相应的服务器处理进程。

—首选tomcat

既有静态业务又有动态业务

采用Nginx

利用nginx软件是无法处理动态业务请求,要让nginx结合php软件处理动态业务请求,在加上mysql 即 LNMP架构

三 、web cache(web缓存),squid(CDN首要选用squid)。

2.4 nginx软件的动态访问瓶颈

Nginx特点:

2.4.1 与别的软件的自己检查自纠

先来看看Apache软件的脾气,如下

²  Apache2.2本子非凡稳定强大,据官方说,Apache2.4本子质量更强。

²  Prefork方式撤消了经过创设开销,质量很高。

²  处理动态业务数据时,因涉及到后端的斯特林发动机和数据库,瓶颈不在Apache上。

²  高并发时消耗系统能源绝对多一些。

²  基于守旧的select模型,高并发能力简单。

²  帮助扩展库,可透过DSO、apxs方法编写翻译安装额外的插件功用,不供给再行编译Apache

²  功用多,更平稳,更安全,插件也多。

²  市镇份额在渐渐递减

 

再来看看Nginx软件的特点,如下:

n  基于异步网结I/O模 型(epollk kqueue)

n  具备扶助高品质,高并发的特色,并发连接可达数万。

n  对小文件(小于1
MB的静态文件)高并发援助很好,品质很高

n  不辅助类似 Apache的DSO情势、扩充库必须编写翻译进主程序(缺点)

n  进程占用系统能源比较低。

n  帮忙Web、反向Proxy、Cache三大主要成效,幷且都很特出。

n  市集份额在日益连忙扩张。

 

最后是Lighttpd的特点,如下:

²  基于异步网络 I/ O模型,品质、并发都与 Nginx相近。

²  扩张库是 SO方式,比Nginx灵活

²  近期境内的使用率比较低,安全性没有
Apache和Nginx好。

²  通过插件(mod_secdownload)可实现公文 U逍客L地址加密(优点)

²  社区不活跃,市镇份额较低,

 

一 、配置不难、灵活、轻量。

2.4.2 最重视的区分(select & epoll)

NGINX 使用的是epoll
和Kqueue 异步网络I/O模型,而apache使用的是价值观的select模型

比喻:

第多个比喻:

即使你在大学读书,住的宿舍楼有比比皆是屋子,你的情人要来找你。select版宿管阿姨就会带着您的情侣到各房间挨个去找,直到找到你了结。而epoll版宿管二姨会先记下每位入住同学的房间号,你的朋友来找你时,只需告诉您的爱人你住在哪些房间即可,不用亲自带着你的意中人满宿舍楼找人了。假如还要来了玖拾叁人,都要找本身住那栋楼的同校,select版和epoll版宿管大姑,何人的功能更高,就很明朗了。

第三个比喻:

select的调用复杂度是线性的,即O(n)。举个例子,二个女佣照看照看一群孩子,假设把男女是不是须求尿尿比作网络I/O事件,select的效益就好比那几个保姆挨个询问每一种孩子”你要尿尿吗?”假设儿女回答是,保姆则把男女领出来放到其余3个地点。当全数子女了然完之后,保姆领着那些要尿尿的孩子去上厕所(处理网络I/O事件).在epoll机制下,保姆不再须求种种询问各类孩子是还是不是须求尿尿。取而代之的是,假诺孩子急需尿尿,他就和好积极站到先行约定好的地点,而保姆的天职便是查看事先约定好的地点是不是有儿女。倘使有儿童,则领着儿女去上厕所(互联网事件处理)。由此,epoll的那种机制,能够高效地拍卖成千成万的出现连接,并且品质不会趁着连接数増加而降落太多。

二 、高并发(静态小文件),静态几万的面世。

2.4.3 apache select和nginx epoll技术相比图

指标

select

epoll

性能

随着连接数的增加性能急剧下降。处理成千上万的并发连接数,性能很差

随着连接数的增加,性能基本上没有下降。处理成千上万连接时性能很好

连接数

连接数有限制,处理的最大连接数不超过1024,如果要处理的连接数超过1024个,则需要修改FD_SETSIZE宏,并重新编译

连接数无限制

内在处理机制

线性轮询

回调callback

开发复杂性

三 、占用财富少。

第③章 nginx的安装与行使

④ 、作用体系比较多(web、cache、proxy),每一功效都不是专程强。

3.1 nginx软件的编译安装步骤

五 、支持epoll模型。使得nginx能够补助高产出。apache使用select模型。

3.1.1 检查软件安装的系统环境

[[email protected]
~]# cat /etc/redhat-release

CentOS release 6.9 (Final)

[[email protected]
~]# uname -r

2.6.32-696.el6.x86_64

六 、nginx能够包容动态PHP服务(fastcgi接口)。

3.1.2 安装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

⑦ 、利用nginx能够对IP限制速度,可限制连接数。

3.1.3 下载nginx软件

wget
http://nginx.org/download/nginx-1.10.2.tar.gz

表明:软件非常的小,用心查看一下

解压软件

tar xf nginx-1.10.2.tar.gz

Nginx的利用场面

3.1.4 成立管理用户 www

useradd -M -s /sbin/nologin www

 

一 、提供静态服务(图片、摄像服务),另1个lighttpd。几万并发。

3.1.5  nginx软件编写翻译安装进度

贰 、提供动态服务,nginx+fastcgi的点子运转PHP、JSP。动态出现500-1500。(apache+php、lighttpd+fastcgi
php)

3.1.5.1  注意

软件编译安装步骤

a>软件解压配置(将软件程序安装到哪些目录中
开启nginx软件的什么作用)

b>软件编写翻译进度

c>软件编写翻译安装过程

   注意顺序,顺序不对软件安装会出错

③ 、反向代理、负载均衡。日PV3000万以下,都足以直接用nginx做反向代理。(haproxy、F伍 、A10)

3.1.5.2  编写翻译安装软件

一 、配置软件,在软件的解压目录中

[[email protected]
nginx-1.10.2]# ./configure –prefix=/application/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作用模块

经过软件编写翻译进度中的重回值是还是不是正确,确认配置是不是科学

[[email protected]
nginx-1.10.2]# echo $?

0

   贰 、编写翻译软件

[[email protected]
nginx-1.10.2]# make

   三 、编写翻译安装

[[email protected]
nginx-1.10.2]# make install

④ 、缓存服务。类似squid、varnish、ats。

3.1.6 创制软连接

[[email protected]
application]# ln -s /application/nginx-1.10.2/
/application/nginx

nginx匡助虚拟主机

3.1.7 精简化nginx.conf 主配置文件内容

[[email protected]
conf]# egrep -v “#|^$” nginx.conf.default >nginx.conf

3个server标签段正是3个虚拟主机。

3.1.8 运营程序

[[email protected]
application]# /application/nginx/sbin/nginx

[[email protected]
application]#

检查是不是运转

[[email protected]
application]# ps -ef |grep nginx

root      26548      1  0 20:13 ?        00:00:00
nginx: master process /application/nginx/sbin/nginx

www       26549  26548  0 20:13 ?        00:00:00
nginx: worker process       

root      26551  23431  3 20:13 pts/0    00:00:00
grep –color=auto nginx

自作者批评端口音讯

[[email protected]
application]# netstat -lntup |grep 80

tcp        0      0 0.0.0.0:80                 
0.0.0.0:*                   LISTEN      26548/nginx 

劳动配置到位

 

于今软件安装完结!

nginx命令简化方法

echo ‘export
PATH=/application/nginx/sbin:$PATH’>>/etc/profile

source /etc/profile

which nginx

① 、基于域名的虚拟主机。通过域名来差异虚拟主机。应用:外部网站。

3.1 nginx 目录结构

[[email protected]
nginx]# ll

total 36

drwxr-xr-x 2 root root 4096 Oct 21 19:34 conf   
#配置文件保留目录

drwxr-xr-x 2 root root 4096 Oct 21 19:34 html   
#站点目录

drwxr-xr-x 2 root root 4096 Oct 21 20:26 logs   
#nginx 服务相关日志文件保留目录(错误日志访问日志)

drwxr-xr-x 2 root root 4096 Oct 21 19:34 sbin   
# 服务命令目录(只有1个nginx文件)

② 、基于端口的虚拟主机。通过端口来区分虚拟主机。应用:公式内部网站,网站后台。

3.2 nginx.conf 配置文件表达

如此那般的配置文件是经过精简化配置文件获得!

[[email protected]
conf]# cat 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
区块甘休

}                                            ←
HTTP 区块截止

叁 、基于IP的虚拟主机。差不多不用。不帮忙ifconfig别称,配置文件可以。

3.2.1 站点目录与首页文件概念

 

Nginx安装

安装PCRE

Pcre全称(Perl Compatible Regular
Expressions),中文perl兼容正则表明式。

  1. [root@lnmp ~]# cat
    /etc/redhat-release

  2. CentOS release 6.6 (Final)

  3. [root@lnmp ~]# uname -r

  4. 2.6.32-504.el6.x86_64

  5. [root@lnmp ~]# uname -m

  6. x86_64

  7. [root@lnmp ~]# rpm -qa pcre
    pcre-devel

  8. pcre-7.8-6.el6.x86_64

  9. [root@lnmp ~]# yum install pcre
    pcre-devel -y

  10. [root@lnmp ~]# rpm -qa pcre
    pcre-devel

  11. pcre-7.8-7.el6.x86_64

  12. pcre-devel-7.8-7.el6.x86_64

安装OpenSSL

  1. [root@lnmp ~]# rpm -qa openssl
    openssl-devel

  2. openssl-1.0.1e-30.el6.x86_64

  3. [root@lnmp ~]# yum install
    openssl-devel -y

  4. [root@lnmp ~]# rpm -qa openssl
    openssl-devel

  5. openssl-devel-1.0.1e-48.el6_8.3.x86_64

  1. openssl-1.0.1e-48.el6_8.3.x86_64

安装nginx

  1. [root@lnmp nginx-1.6.3]# useradd
    nginx -s /sbin/nologin -M

  2. [root@lnmp nginx-1.6.3]# id nginx

  1. uid=503(nginx) gid=503(nginx)
    groups=503(nginx)

  2. [root@lnmp ~]# cd
    /home/oldboy/tools/

  3. [root@lnmp tools]# wget -q
    http://nginx.org/download/nginx-1.6.3.tar.gz

  1. [root@lnmp tools]# ls
    nginx-1.6.3.tar.gz -lk

  2. -rw-r–r–. 1 root root 787 Apr 8 2015
    nginx-1.6.3.tar.gz

  3. [root@lnmp tools]# tar xf
    nginx-1.6.3.tar.gz

  4. [root@lnmp tools]# cd nginx-1.6.3

  1. [root@lnmp nginx-1.6.3]# ll

  2. total 624

  3. drwxr-xr-x. 6 1001 1001 4096 Feb 16
    02:42 auto

  4. -rw-r–r–. 1 1001 1001 236608 Apr 7
    2015 CHANGES

  5. -rw-r–r–. 1 1001 1001 360501 Apr 7
    2015 CHANGES.ru

  6. drwxr-xr-x. 2 1001 1001 4096 Feb 16
    02:42 conf

  7. -rwxr-xr-x. 1 1001 1001 2369 Apr 7 2015
    configure

  8. drwxr-xr-x. 4 1001 1001 4096 Feb 16
    02:42 contrib

  9. drwxr-xr-x. 2 1001 1001 4096 Feb 16
    02:42 html

  10. -rw-r–r–. 1 1001 1001 1397 Apr 7 2015
    LICENSE

  11. drwxr-xr-x. 2 1001 1001 4096 Feb 16
    02:42 man

  12. -rw-r–r–. 1 1001 1001 49 Apr 7 2015
    README

  13. drwxr-xr-x. 8 1001 1001 4096 Feb 16
    02:42 src

  14. [root@lnmp nginx-1.6.3]# tree|wc -l

  1. 404

  2. [root@lnmp nginx-1.6.3]# ./configure
    –prefix=/application/nginx-1.6.3 –user=nginx –group=nginx
    –with-http_stub_status_module

  3. [root@lnmp nginx-1.6.3]# echo $?

  1. 0

  2. [root@lnmp nginx-1.6.3]# make &&
    make install

  3. [root@lnmp nginx-1.6.3]# cd ..

  1. [root@lnmp tools]# ll
    /application/nginx-1.6.3/ -ld

  2. drwxr-xr-x. 6 root root 4096 Feb 16
    02:50 /application/nginx-1.6.3/

  3. [root@lnmp tools]# ln -s
    /application/nginx-1.6.3/ /application/nginx

  4. [root@lnmp tools]# ls -l
    /application/

  5. total 4

  6. lrwxrwxrwx. 1 root root 25 Feb 16 02:53
    nginx -> /application/nginx-1.6.3/

  7. drwxr-xr-x. 6 root root 4096 Feb 16
    02:50 nginx-1.6.3

启动nginx

  1. [root@lnmp tools]#
    /application/nginx/sbin/nginx

  2. [root@lnmp tools]# ps -ef|grep
    nginx|grep -v grep

  3. root 1362 1231 0 01:44 pts/0 00:00:00
    wget -q http://nginx.org/download/nginx-1.6.3.tar.gz

  1. root 1364 1231 0 01:46 pts/0 00:00:00
    wget -q http://nginx.org/download/nginx-1.6.3.tar.gz
  1. root 3853 1 0 02:59 ? 00:00:00 nginx:
    master process /application/nginx/sbin/nginx

  2. nginx 3854 3853 0 02:59 ? 00:00:00
    nginx: worker process

  3. [root@lnmp tools]# ss -lntup|grep
    nginx

  4. tcp LISTEN 0 128 *:80 *:*
    users:((“nginx”,3853,6),(“nginx”,3854,6))

  5. [root@lnmp tools]# curl 127.0.0.1

  1. <!DOCTYPE html>

  2. <html>

  3. <head>

  4. <title>Welcome to
    nginx!</title>

  5. <style>

  6.     body {

  7.         width: 35em;

  8.         margin: 0 auto;

  9.         font-family: Tahoma, Verdana,
    Arial, sans-serif;

  10.     }

  11. </style>

  12. </head>

  13. <body>

  14. <h1>Welcome to nginx!</h1>

  1. <p>If you see this page, the nginx web server is successfully installed and

  2. working. Further configuration is required.</p>

  3.  

  4. <p>For online documentation and
    support please refer to

  5. <a href=”http://nginx.org/"&gt;nginx.org&lt;/a&gt;.&lt;br/&gt;

  1. Commercial support is available at

  2. <a href=”http://nginx.com/"&gt;nginx.com&lt;/a&gt;.&lt;/p&gt;

  1.  

  2. <p><em>Thank you for using nginx.</em></p>

  3. </body>

  4. </html>

浏览器访问

图片 9

  1. [root@lnmp nginx]# ls -l|grep -v
    temp

  2. total 36

  3. drwxr-xr-x. 2 root root 4096 Feb 16
    02:50 conf #配置

  4. drwxr-xr-x. 2 root root 4096 Feb 16
    02:50 html #暗中同意网站目录

  5. drwxr-xr-x. 2 root root 4096 Feb 16
    02:59 logs #张冠李戴,访问日志

  6. drwxr-xr-x. 2 root root 4096 Feb 16
    02:50 sbin #起步命令

3.2.2 配置文件详解

 

配备站点

新建三个index2.html。

  1. [root@lnmp html]# cat index2.html
  1. <html>

  2. <head><title>Golden,s Nginx
    server blog.</title></head>

  3. <body>

  4. Hi,I am golden.My blog address is

  5. <a href=”http://www.cnblogs.com/yinshoucheng-golden"&gt;http://www.cnblogs.com/yinshoucheng-golden&lt;/a&gt;

  1. </body>

  2. </html>

浏览器访问:http://192.168.31.134/index2.html

图片 10

Nginx http作用模块汇总

ngx_http_core_module:包含一些主干的http参数配置,对应nginx的计划为http区块部分。

ngx_http_access_module:访问控制模块,用来支配网站用户对nginx的拜访。

ngx_http_gzip_module:压缩模块,对nginx再次来到的数据压缩,属于品质优化模块。

ngx_http_fastcgi_module:fastcgi模块和动态应用相关的模块,例如PHP。

ngx_http_proxy_module:proxy代理模块。

ngx_http_upstream_module:负载均衡模块,能够兑现网站的负荷均衡功效及节点的健检。

ngx_http_rewrite_module:U猎豹CS6L地址重写模块。

ngx_http_limit_conn_module:限制用户并发连接数及请求数模块。

ngx_http_limit_req_module:限制Nginx request processing
rate依照定义的key。

ngx_http_log_module:访问日志模块,以钦点的格式记录nginx客户走访日志等音信。

ngx_http_anth_basic_module:web认证模块,设置web用户通过账号密码访问nginx。

ngx_http_ssl_module:ssl模块,用于加密的http连接,如https。

ngx_http_stub_status_module:记录nginx基本访问状态消息等的模块。

3.3 【常见错误】nginx软件的编写翻译安装常见错误表达

nginx.conf

  1. [root@lnmp conf]# cat nginx.conf
  1.  

  2. #user nobody;

  3. worker_processes 1; # 4 –
    10行main区,nginx宗旨功用模块

  4.  

  5. #error_log logs/error.log;

  6. #error_log logs/error.log notice;

  1. #error_log logs/error.log info;
  1.  

  2. #pid logs/nginx.pid;

  3.  

  4.  

  5. events { # 13 – 15 行
    events区,nginx宗旨作用模块

  6.     worker_connections 1024;

  7. }

  8.  

  9.  

  10. http { # http区,nginx http宗旨模块

  1.     include mime.types;

  2.     default_type
    application/octet-stream;

  3.  

  4.     #log_format main ‘$remote_addr –
    $remote_user [$time_local] “$request” ‘

  5.     # ‘$status $body_bytes_sent
    “$http_referer” ‘

  6.     # ‘”$http_user_agent” “$http_x_forwarded_for”‘;

  7.  

  8.     #access_log logs/access.log main;

  1.  

  2.     sendfile on;

  3.     #tcp_nopush on;

  4.  

  5.     #keepalive_timeout 0;

  6.     keepalive_timeout 65;

  7.  

  8.     #gzip on;

  9.  

  10.     server { # server标签

  11.         listen 80; # 端口

  12.         server_name localhost; # 域名

  1.  

  2.         #charset koi8-r;

  3.  

  4.         #access_log
    logs/host.access.log main;

  5.  

  6.         location / { # 依照uri举行跳转

  1.             root html;

  2.             index index.html index.htm;
    # 首页

  3.         }

  4.  

  5.         #error_page 404 /404.html;

  1.  

  2.         # redirect server error pages
    to the static page /50x.html

  1.         #

  2.         error_page 500 502 503 504
    /50x.html;

  3.         location = /50x.html {

  4.             root html;

  5.         }

  6.  

  7.         # proxy the PHP scripts to
    Apache listening on 127.0.0.1:80

  8.         #

  9.         #location ~ \.php$ {

  10.         # proxy_pass http://127.0.0.1;

  11.         #}

  12.  

  13.         # pass the PHP scripts to
    FastCGI server listening on 127.0.0.1:9000

  14.         #

  15.         #location ~ \.php$ {

  16.         # root html;

  17.         # fastcgi_pass
    127.0.0.1:9000;

  18.         # fastcgi_index index.php;

  1.         # fastcgi_param
    SCRIPT_FILENAME /scripts$fastcgi_script_name;

  2.         # include fastcgi_params;

  1.         #}

  2.  

  3.         # deny access to .htaccess
    files, if Apache’s document root

  1.         # concurs with nginx’s one
  1.         #

  2.         #location ~ /\.ht {

  3.         # deny all;

  4.         #}

  5.     }

  6.  

  7.  

  8.     # another virtual host using mix of IP-, name-, and port-based
    configuration

  9.     #

  10.     #server {

  11.     # listen 8000;

  12.     # listen somename:8080;

  13.     # server_name somename alias
    another.alias;

  14.  

  15.     # location / {

  16.     # root html;

  17.     # index index.html index.htm;

  1.     # }

  2.     #}

  3.  

  4.  

  5.     # HTTPS server

  6.     #

  7.     #server {

  8.     # listen 443 ssl;

  9.     # server_name localhost;

  10.  

  11.     # ssl_certificate cert.pem;

  1.     # ssl_certificate_key cert.key;
  1.  

  2.     # ssl_session_cache
    shared:SSL:1m;

  3.     # ssl_session_timeout 5m;

  1.  

  2.     # ssl_ciphers HIGH:!aNULL:!MD5;

  1.     # ssl_prefer_server_ciphers
    on;

  2.  

  3.     # location / {

  4.     # root html;

  5.     # index index.html index.htm;

  1.     # }

  2.     #}

  3.  

  4. }

 

  1. [root@lnmp conf]# egrep -v “#|^$” nginx.conf.default

  2. worker_processes 1;

  3. events {

  4.     worker_connections 1024;

  5. }

  6. http {

  7.     include mime.types;

  8.     default_type
    application/octet-stream;

  9.     sendfile on;

  10.     keepalive_timeout 65;

  11.     server {

  12.         listen 80;

  13.         server_name localhost;

  14.         location / {

  15.             root html;

  16.             index index.html index.htm;

  1.         }

  2.         error_page 500 502 503 504
    /50x.html; #并发对应的http状态码使用50x.html回应

  3.         location = /50x.html {
    #location区块初步,访问50x.html

  4.             root html;
    #钦命相应的站点目录为html

  5.         }

  6.     }

  7. }

  8. [root@lnmp conf]# egrep -v “#|^$” nginx.conf.default >nginx.conf

3.3.1 nginx软件安装进度中遇见的题材

软件依赖包未正确安装难题—PCRE正视包没有安装

./configure: error: the HTTP rewrite module requires
the PCRE library.

You can either disable the module by using
–without-http_rewrite_module

option, or install the PCRE library into the system,
or build the PCRE library

statically from the source with nginx by using
–with-pcre=<path> option.

化解措施:yum install pcre pcre-devel -y

软件依赖包未正确安装难题—OPENSSL依赖包没有设置

./configure: error: SSL modules require the OpenSSL
library.

You can either do not enable the modules, or install
the OpenSSL library

into the system, or build the OpenSSL library
statically from the source

with nginx by using –with-openssl=<path>
option.

缓解方式:yum install openssl openssl-devel -y

搭建基于域名的虚拟主机

  1. [root@lnmp conf]# cat nginx.conf
  1. worker_processes 1; #worker进程的数据
  1. events { #事件区块起首

  2.     worker_connections 1024;
    #每一种worker进度支持的最哈拉雷接数

  3. } #事件区块开头

  4. http { #http区块初始

  5.     include mime.types;
    #nginx协理的传媒类型库文件包括

  6.     default_type
    application/octet-stream; #暗中认可的传播媒介类型

  7.     sendfile on; #开启高效传输形式

  1.     keepalive_timeout 65; #连年超时
  1.     server {
    #第②个server区块发轫,表示二个单身的虚拟主机站点

  2.         listen 80;
    #提供服务的端口,默许80

  3.         server_name
    www.etiantian.org;
    #提供劳动的域名主机名

  4.         location / {
    #首先个location区块开端

  5.             root html/www;
    #站点的根目录,相对于nginx安转目录

  6.             index index.html index.htm;
    #暗中认可的首页文件,五个用空格分开

  7.         } #先是个localtion区块结果

  1.     }

  2.     server {

  3.         listen 80;

  4.         server_name bbs.etiantian.org;

  1.         location / {

  2.             root html/bbs;

  3.             index index.html index.htm;

  1.         }

  2.     }

  3.  

  4. }

 

  1. [root@lnmp conf]# mkdir
    ../html/{www,bbs} -p

  2. [root@lnmp conf]# tree ../html/

  1. ../html/

  2. ├── 50x.html

  3. ├── bbs

  4. ├── index2.html

  5. ├── index.html

  6. └── www

  7. [root@lnmp conf]# echo “www.etiantian.org” >../html/www/index.html

  1. [root@lnmp conf]# echo “bbs.etiantian.org” >../html/bbs/index.html
  1. [root@lnmp conf]# cat
    ../html/{www,bbs}/index.html

  2. www.etiantian.org

  3. bbs.etiantian.org

  4. [root@lnmp conf]#
    /application/nginx/sbin/nginx -t #自小编批评语法

  5. nginx: the configuration file
    /application/nginx-1.6.3/conf/nginx.conf syntax is ok

  6. nginx: configuration file
    /application/nginx-1.6.3/conf/nginx.conf test is successful

  7. [root@lnmp conf]#
    /application/nginx/sbin/nginx -s reload #重启

  8. [root@lnmp conf]# cat /etc/hosts

  1. 127.0.0.1 localhost
    localhost.localdomain localhost4 localhost4.localdomain4

  2. ::1 localhost localhost.localdomain
    localhost6 localhost6.localdomain6

  3.  

  4. 192.168.31.132 server

  5. 192.168.31.133 lamp

  6. 192.168.31.134 lnmp www.etiantian.org
    bbs.etiantian.org

  7. 192.168.31.136 backup

  8.  

  9. [root@lnmp conf]# ping
    www.etiantian.org

  10. PING lnmp (192.168.31.134) 56(84) bytes
    of data.

  11. 64 bytes from lnmp (192.168.31.134):
    icmp_seq=1 ttl=64 time=0.084 ms

  12. 64 bytes from lnmp (192.168.31.134):
    icmp_seq=2 ttl=64 time=0.050 ms

  13. ^Z

  14. [5]+ Stopped ping www.etiantian.org

  1. [root@lnmp conf]# ping
    bbs.etiantian.org

  2. PING lnmp (192.168.31.134) 56(84) bytes
    of data.

  3. 64 bytes from lnmp (192.168.31.134):
    icmp_seq=1 ttl=64 time=0.034 ms

  4. 64 bytes from lnmp (192.168.31.134):
    icmp_seq=2 ttl=64 time=0.050 ms

  5. ^Z

  6. [6]+ Stopped ping bbs.etiantian.org

  1. [root@lnmp conf]# curl
    www.etiantian.org

  2. www.etiantian.org

  3. [root@lnmp conf]# curl
    bbs.etiantian.org

  4. bbs.etiantian.org

透过浏览器访问要求修改windows
hosts文件(C:\Windows\System32\drivers\etc),加入192.168.31.134
www.etiantian.org bbs.etiantian.org。

依据域名的虚拟主机配置步骤

一 、修改配置文件nginx.conf。

贰 、成立站点目录

③ 、检查语法,重新加载nginx。

4、配置hosts,测试。

3.3.2 nginx软件运营进程中相遇的题材

nginx软件重复运行发生的错误音信

[[email protected]
nginx-1.10.2]# /application/nginx/sbin/nginx

nginx: [emerg] bind() to 0.0.0.0:80 failed (98:
Address already in use)

nginx: [emerg] bind() to 0.0.0.0:80 failed (98:
Address already in use)

nginx: [emerg] bind() to 0.0.0.0:80 failed (98:
Address already in use)

nginx: [emerg] bind() to 0.0.0.0:80 failed (98:
Address already in use)

nginx: [emerg] bind() to 0.0.0.0:80 failed (98:
Address already in use)

nginx: [emerg] still could not bind()

杀鸡取卵办法:

nginx软件已经起步无需反复运维,假如急需重新起动要求甘休nginx进度恐怕用reload情势开始展览重启

基于端口的虚拟主机

  1. [root@lnmp conf]# cat nginx.conf
  1. worker_processes 1;

  2. events {

  3.     worker_connections 1024;

  4. }

  5. http {

  6.     include mime.types;

  7.     default_type
    application/octet-stream;

  8.     sendfile on;

  9.     keepalive_timeout 65;

  10.     server {

  11.         listen 8001;

  12.         server_name www.etiantian.org;

  1.         location / {

  2.             root html/www;

  3.             index index.html index.htm;

  1.         }

  2.     }

  3.     server {

  4.         listen 8002;

  5.         server_name www.etiantian.org;

  1.         location / {

  2.             root html/bbs;

  3.             index index.html index.htm;

  1.         }

  2.     }

  3.    server {

  4.         listen 8003;

  5.         server_name www.etiantian.org;

  1.         location / {

  2.             root html/blog;

  3.             index index.html index.htm;

  1.         }

  2.     }

  3.  

  4. }

 

  1. [root@lnmp conf]#
    /application/nginx/sbin/nginx -t

  2. nginx: the configuration file
    /application/nginx-1.6.3/conf/nginx.conf syntax is ok

  3. nginx: configuration file
    /application/nginx-1.6.3/conf/nginx.conf test is successful

  4. [root@lnmp conf]#
    /application/nginx/sbin/nginx -s reload

  5. [root@lnmp conf]# netstat
    -lntup|grep nginx

  6. tcp 0 0 0.0.0.0:8001 0.0.0.0:* LISTEN
    3853/nginx

  7. tcp 0 0 0.0.0.0:8002 0.0.0.0:* LISTEN
    3853/nginx

  8. tcp 0 0 0.0.0.0:8003 0.0.0.0:* LISTEN
    3853/nginx

  9. [root@lnmp conf]# curl http://www.etiantian.org:8001

  10. www.etiantian.org

  11. [root@lnmp conf]# curl http://www.etiantian.org:8002

  12. bbs.etiantian.org

  13. [root@lnmp conf]# curl http://www.etiantian.org:8003

  14. blog.etiantian.org

3.3.3 运转 Nginx 时如下报错”nginx:[emerg]getpwnam(“nginx”〉failed”

解答这是因为尚未对应的Nginx服务用户,执行useradd nginx-s/sbin/no丨ogin-M创造 Nginx

用户即可。为了让读者知道难题,再现上述荒唐进程,命令如下:

[[email protected]
tools]# pkill nginx

[[email protected]
tools]# userdel nginx

[[email protected]
tools]# /application/nginx/sbin/nginx

nginx: [emerg] getpwnam(Mnginx”) failed

[[email protected]
tools]# useradd nginx -s /sbin/nologin -M

[[email protected]
tools]# /application/nginx/sbin/nginx

 

基于IP的虚拟主机

  1. [root@lnmp conf]# ip addr add
    192.168.31.135/24 dev eth0

  2. [root@lnmp conf]# ip addr

  3. 1: lo: <LOOPBACK,UP,LOWER_UP>
    mtu 65536 qdisc noqueue state UNKNOWN

  4.     link/loopback 00:00:00:00:00:00 brd
    00:00:00:00:00:00

  5.     inet 127.0.0.1/8 scope host lo

  1.     inet6 ::1/128 scope host

  2.        valid_lft forever
    preferred_lft forever

  3. 2: eth0:
    <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
    state UP qlen 1000

  4.     link/ether 00:0c:29:03:06:08 brd
    ff:ff:ff:ff:ff:ff

  5.     inet 192.168.31.134/24 brd
    192.168.31.255 scope global eth0

  6.     inet 192.168.31.135/24 scope global
    secondary eth0

  7.     inet6 fe80::20c:29ff:fe03:608/64
    scope link

  8.        valid_lft forever
    preferred_lft forever

  9. [root@lnmp conf]# cat nginx.conf

  1. worker_processes 1;

  2. events {

  3.     worker_connections 1024;

  4. }

  5. http {

  6.     include mime.types;

  7.     default_type
    application/octet-stream;

  8.     sendfile on;

  9.     keepalive_timeout 65;

  10.     server {

  11.         listen 192.168.31.134:80;

  1.         server_name www.etiantian.org;
  1.         location / {

  2.             root html/www;

  3.             index index.html index.htm;

  1.         }

  2.     }

  3.     server {

  4.         listen 192.168.31.135:80;

  1.         server_name www.etiantian.org;
  1.         location / {

  2.             root html/bbs;

  3.             index index.html index.htm;

  1.         }

  2.     }

  3. }

  4. [root@lnmp conf]#
    /application/nginx/sbin/nginx -t

  5. nginx: the configuration file
    /application/nginx-1.6.3/conf/nginx.conf syntax is ok

  6. nginx: configuration file
    /application/nginx-1.6.3/conf/nginx.conf test is successful

  7. [root@lnmp conf]#
    /application/nginx/sbin/nginx -s reload

  8. [root@lnmp conf]# curl
    192.168.31.134

  9. www.etiantian.org

  10. [root@lnmp conf]# curl
    192.168.31.135

  11. bbs.etiantian.org

删去添加的IP

  1. [root@lnmp conf]# ip addr del
    192.168.31.135/24 dev eth0

  2. [root@lnmp conf]# ip addr

  3. 1: lo: <LOOPBACK,UP,LOWER_UP>
    mtu 65536 qdisc noqueue state UNKNOWN

  4.     link/loopback 00:00:00:00:00:00 brd
    00:00:00:00:00:00

  5.     inet 127.0.0.1/8 scope host lo

  1.     inet6 ::1/128 scope host

  2.        valid_lft forever
    preferred_lft forever

  3. 2: eth0:
    <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
    state UP qlen 1000

  4.     link/ether 00:0c:29:03:06:08 brd
    ff:ff:ff:ff:ff:ff

  5.     inet 192.168.31.134/24 brd
    192.168.31.255 scope global eth0

  6.     inet6 fe80::20c:29ff:fe03:608/64
    scope link

  7.        valid_lft forever
    preferred_lft forever

     

3.3.4 编译安装pcre编写翻译软件时,gcc不全导致报错(本文使用yum安装不设有此难点)。

报错音讯如下:

[[email protected]
pcre-8.30]# make && make install

make all-am

make[l] : Entering directory
7home/gjlin/tools/pcre-8.30′

CXX pcrecpp.lo

libtool : compile : unrecognized option
‘-DHAVE_CONFIG_H’

libtool : compile : Try ‘libtool –help* for more
information.

make[l】:***
[pcrecpp.lo】错误 1

make[l] : Leaving directory
Vhome/gjlin/tools/pcre-8.30′

make : *** [all]错误
2

解答:执行“yum -y install
gcc-c++”命令安装gcc-c++正视包。

3.3.5 nginx软件编写翻译安装后,看不到程序目录(/application)

   表明:编写翻译安装步骤不对(配置 编写翻译编写翻译安装生成/appliation)

3.3.6 nginx软件排查难题三部曲表明

       a 在客户端上ping服务器端IP,检查链路是还是不是通畅

      b 在客户端上telnet服务器端IP、端口,检查链路访问是不是通畅

      c 在客户端上wget检查和测试模拟页面访问是还是不是符合规律

3.3.7 【注意】403状态码出现意况原因

    01. 劳务阻止客户端访问

    02.
服务端站点目录中,没有点名首页文件新闻   

3.4 nginx软件使用命令参数

3.4.1 nginx 运行方法

[[email protected]
application]# /application/nginx/sbin/nginx

3.4.2 nginx 结束方法

[[email protected]
application]# /application/nginx/sbin/nginx -s stop

3.4.3 nginx 重启方法 (平滑重启)

[[email protected]
application]# /application/nginx/sbin/nginx -s reload

3.4.4 检查安顿文件语法是还是不是科学

[[email protected]
application]# /application/nginx/sbin/nginx -t

nginx: the configuration file
/application/nginx-1.10.2/conf/nginx.conf syntax is ok

nginx: configuration file
/application/nginx-1.10.2/conf/nginx.conf test is successful

3.4.5 展现配置参数  -V (大写V)

[[email protected]
application]# /application/nginx/sbin/nginx -V

nginx version: nginx/1.10.2

built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)

built with OpenSSL 1.0.1e-fips 11 Feb 2013

TLS SNI support enabled

configure arguments:
–prefix=/application/nginx-1.10.2 –user=www –group=www
–with-http_stub_status_module –with-http_ssl_module

3.4.6 nginx软件使用进度中深刻表达

①. nginx软件语法检查措施:

    nginx -t 

②. nginx软件访问测试进度:

curl -v www.baidu.com

③. nginx软件编译参数查看:

    nginx -V                 <—
查看原有的编写翻译参数消息

3.5 nginx软件静态页面编写进程

编排配置文件

[[email protected]
www]# cat ../../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.zinx.top;

        location / {

            root   html/www;

            index  oldboy.html index.html
index.htm;

        }

        error_page   500 502 503 504 
/50x.html;

        location = /50x.html {

            root   html;

        }

    }

}

编纂静态访问页面文件消息

[[email protected]
www]# cat oldboy.html  

<html>

<meta charset=”utf-8″>

<head>

<title>TEST</title>

</head>

<body>

惨绿少年

<table border=1>

<tr> <td>01</td> <td>
</td> </tr>

<tr> <td>02</td> <td>
</td> </tr>

 <tr> <td>03</td> <td>
</td> </tr>

 </table>

<a href=”http://blog.znix.top"&gt;

<img src=”znix.png” />

</a>

</body>

</html>

第④章 nginx进阶 –虚拟主机配置

4.1 【公司须求】必要遵照原先nginx服务编写翻译安装进程设置

壹 、参看已安装服务的计划参数音信

[[email protected]
sbin]# /application/nginx/sbin/nginx -V

nginx version: nginx/1.10.2

built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)

built with OpenSSL 1.0.1e-fips 11 Feb 2013

TLS SNI support enabled

configure arguments:
–prefix=/application/nginx-1.10.2 –user=www –group=www
–with-http_stub_status_module –with-http_ssl_module

   -V 参数能显得软件的事无巨细详细,安装配备参数

贰 、依照安插参数举行布署

4.1.1 【语法检查】检查安顿文件

[[email protected]
nginx]# /application/nginx/sbin/nginx -t

nginx: the configuration file
/application/nginx-1.10.2/conf/nginx.conf syntax is ok

nginx: configuration file
/application/nginx-1.10.2/conf/nginx.conf test is successful

4.2 首页文件不存在–利用nginx服务搭建文件共享服务器

经过配备  autoindex on;
参数

选取 autoindex参数,nginx能识其余直接显示,不识别的间接下载

布置完 autoindex on; 参数现在会展现站点下的公文音讯

对此nginx能够分析的财富会分析相应的情节

对于nginx不可能分析的财富会平素下载

4.2.1 举行curl时,报403谬误,因为尚未首页文件消息

 [[email protected]
~]# echo ‘web01 www’ >
/application/nginx/html/www/index.html

        <-
在虚拟主机钦点的站点目录中创立首页文件       
 

[[email protected]
~]# curl www.etiantian.org 

<- 利用curl命令本地检测nginx配置是不是中标;已经存在首页文件,测试成功

4.2.2 autoindex on参数实践

1)修改配置文件

[[email protected]
www]# cat ../../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       10.0.0.8:80;

        server_name  www.etiantian.org;

        location / {

            root   html/www;

            autoindex on;

        }

        error_page   500 502 503 504 
/50x.html;

        location = /50x.html {

            root   html;

        }

    }

}

2)重启服务

[[email protected]
conf]# /application/nginx/sbin/nginx -t

nginx: the configuration file
/application/nginx-1.10.2/conf/nginx.conf syntax is ok

nginx: configuration file
/application/nginx-1.10.2/conf/nginx.conf test is successful

[[email protected]
conf]# /application/nginx/sbin/nginx -s reload

3)访问测试

 

4.3 【概念】虚拟主机的概念和类型

虚拟主机使用的是特殊的软硬件技术,它把一台运营在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主机都得以是一个单身的网站,能够具备独立的域名,具有完整的Intemet服务器作用(WWW、FTP、Email等),同一台主机上的虚拟主机之间是全然独立的。从网站访问者来看,每一台虚拟主机和一台独立的主机完全等同。

选拔虚拟主机,不用为各种要运维的网站提供一台单独的Nginx服务器或单独运营一组Nginx进度。虚拟主机提供了在一如既往台服务器、同一组Nginx进度上运维多个网站的法力。

 

4.3.1 虚拟主机概念

所谓虚拟主机,在Web服务里正是二个独门的网站站点,这么些站点对应单独的域名(也也许是ip或端口.具有独自的先后及财富目录,能够单独地对外提供劳务供用户访问。

本条独立的站点在布置里是由必然格式的标签段标记的,对于Apache软件以来,二个虚拟主机的标签段经常被含有在以的此<VirtualHost></VirtualHost>,而Nginx软件则利用2个server{}标签来标示叁个虚拟主机。多个Web服务里能够有八个虚拟主机标签对,即能够同时协理五个虚拟主机站点。

4.3.2 虚拟主机类型

大面积的虚拟主机类型有如下两种

1)基于域名的虚拟主机

所谓基于域名的虚拟主机,意思正是经过差别的域名区分不相同的虚拟主机,基于域名的虚拟主机是公司应用最广的虚拟主机类型,大约全数对外提供劳务的网站使用的都以基于域名的虚拟主机,例如: www.znix.top。

2)基于端口的虚拟主机 

同理,所谓基于端口的虚拟主机,意思就是经过差异的端口来分歧不一致的虚拟主机,此类虚拟主机对应的公司应用首要为商家内部网站,例如:一些不希望直接对外提供用户访问的网站后台等,访问基于端口的虚拟主机,地址里要包蕴端口,例如:http://blog.znix.top:80

    3)基于IP的虚拟主机

 所谓基于IP的虚拟主机,意思是通过分裂的IP区分不相同的虚拟主机,

4.3.3 Nginx配置虚拟主机的步骤如下(适合各种虚拟主机类型)

1)增添贰个完好的server标签段到结尾处。注意,要放在http的告竣业余大学学括号前,也正是将server标签段放入http标签。

2)更改server_name及对应网页的root根目录,即使需求任何参数,能够追加或修改。

3)创建Seever_name域名对应网页的根目录,并且创造测试文件,借使没有index首页,访问会晤世403谬误。

    借使是apache软件,没有首页文件,暗中同意会把站点目录上边包车型地铁音信彰显出来

    nginx出403张冠李戴消除办法:http://oldboy.blog.51cto.com/2561410/1633952

    autoindex
on;#<==当找不到首页文件时,会显得目录结构,这么些效果相似不要用除非有须求。

   
PS:展现的目录结构中,有个别音讯点击便是下载,有的点击正是显得,因为增添名称不雷同

        根本在于nginx软件是还是不是能够进行辨析

        nginx是还是不是解析:

        1.htmljpg认识呈现出内容

        2.不认得不解析便径直下载

4)检査Nginx配置文件语法,平滑重启Nginx服务,飞快检査运营结果。

5)在客户端对server_name处配置的域名做host解析或DNS配置,并检査(ping域名看重返的IP是还是不是科学)。

6)在Win32浏览器中输入地方访问,只怕在Linux客户端做hosts解析,用wget或curl接地址访问。

7)在劳动重启或关闭从前先举办三遍配置文件检查
/application/ngnix/sbin/nginx
-t

Nginx虚拟主机的法定帮衬网址为:http://Nginx.org/en/docs/http/requestj3rocessing.html

4.4 【实践】虚拟主机配置

4.4.1 基于域名的虚拟主机

修改配置文件

[[email protected]
~]# cat  /application/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.etiantian.org;

        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  bbs.etiantian.org;

        location / {

            root   html/bbs;

            index  index.html index.htm;

        }

        error_page   500 502 503 504 
/50x.html;

        location = /50x.html {

            root   html;

        }

    }

    server {

        listen       80;

        server_name  blog.etiantian.org;

        location / {

            root   html/blog;

            index  index.html index.htm;

        }

        error_page   500 502 503 504 
/50x.html;

        location = /50x.html {

            root   html;

        }

    }

}

检查安排新闻是或不是正确

[[email protected]
conf]# /application/nginx/sbin/nginx -t

nginx: the configuration file
/application/nginx-1.10.2/conf/nginx.conf syntax is ok

nginx: configuration file
/application/nginx-1.10.2/conf/nginx.conf test is successful

重启服务

[[email protected]
conf]# /application/nginx/sbin/nginx -s reload

小心:服务没有运维的时候不能够使用平滑重启

成立站点目录

[[email protected]
conf]# for name in www blog bbs ;do  mkdir ../html/$name -p
;done

创办主页文件

[[email protected]
conf]# for name in www blog bbs ;do echo “web01 $name”
>../html/$name/index.html  ;done

反省主页内容消息

[[email protected]
conf]# for name in www blog bbs ;do  cat ../html/$name/index.html
;done

web01 www

web01 blog

web01 bbs

修改主机hosts文件

[[email protected]
~]# vim /etc/hosts

172.16.1.8    web01 www.etiantian.org
blog.etiantian.org bbs.etiantian.org

测试

[[email protected]
~]# curl  www.etiantian.org

web01 www

[[email protected]
~]# curl  blog.etiantian.org

web01 blog

[[email protected]
~]# curl  bbs.etiantian.org

web01 bbs

4.4.2 基于端口的虚拟主机

修改配置文件内容

[[email protected]
conf]# vim nginx.conf

    server {

        listen       81;

        server_name  bbs.etiantian.org;

        location / {

            root   html/bbs;

            index  index.html index.htm;

        }

        error_page   500 502 503 504 
/50x.html;

        location = /50x.html {

            root   html;

“nginx.conf” 46L, 1098C written  

重启服务

[[email protected]
conf]# /application/nginx/sbin/nginx -t

nginx: the configuration file
/application/nginx-1.10.2/conf/nginx.conf syntax is ok

nginx: configuration file
/application/nginx-1.10.2/conf/nginx.conf test is successful

[[email protected]
conf]# /application/nginx/sbin/nginx -s reload

反省端口新闻

[[email protected]
conf]# netstat -lntup |grep ng

tcp        0      0 0.0.0.0:80                 
0.0.0.0:*                   LISTEN      40110/nginx        

tcp        0      0 0.0.0.0:81                  0.0.0.0:*                   LISTEN     
40110/nginx  

测试访问

[[email protected]
~]# curl  bbs.etiantian.org:81

web01 bbs

4.4.3 基于IP的虚拟主机

注意:  

使用基于IP的虚拟主机,配置文件修改后要重启(-s stop)

布局和IP地址配置相关的都要采取(-s stop)重启,不可见利用软重启的办法

修改配置文件

[[email protected]
conf]# cat 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       10.0.0.8:80;

        server_name  www.etiantian.org;

        location / {

            root   html/www;

            index  index.html index.htm;

        }

        error_page   500 502 503 504 
/50x.html;

        location = /50x.html {

            root   html;

        }

    }

}

反省安顿文件格式

[[email protected]
conf]# /application/nginx/sbin/nginx -t

nginx: the configuration file
/application/nginx-1.10.2/conf/nginx.conf syntax is ok

nginx: configuration file
/application/nginx-1.10.2/conf/nginx.conf test is successful

重启服务,注意使用的是间接重启的不二法门 

假诺nginx配置文件中提到到IP地址的改变只可以正真的重启才生效

[[email protected]
conf]# /application/nginx/sbin/nginx -s stop

[[email protected]
conf]# /application/nginx/sbin/nginx

[[email protected]
conf]# netstat -lntup |grep ng

tcp        0      0 10.0.0.8:80                 0.0.0.0:*                   LISTEN     
40592/nginx   

走访测试

 

4.5 【规范化配置】nginx配置文件集团规范化

4.5.1 第③个里程碑:  创建虚拟主机配置文件存款和储蓄目录

[[email protected]
conf]# pwd

/application/nginx/conf

[[email protected]
conf]# mkdir extra

4.5.2 第一个里程碑: 生产虚拟主机配置文件

[[email protected]
conf]# sed -n ‘10,21p’ nginx.conf > extra/www.conf

[[email protected]
conf]# sed -n ‘22,33p’ nginx.conf > extra/bbs.conf

[[email protected]
conf]# sed -n ‘34,45p’ nginx.conf > extra/blog.conf

4.5.3 第五个里程碑: 修改nginx配置文件使之加载识别虚拟主机配置文件

[[email protected]
conf]# cat  nginx.conf

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    include extra/*;

}

4.5.4 重启服务

[[email protected]
conf]# /application/nginx/sbin/nginx -t

nginx: the configuration file
/application/nginx-1.10.2/conf/nginx.conf syntax is ok

nginx: configuration file
/application/nginx-1.10.2/conf/nginx.conf test is successful

4.5.5 检查监听端口

[[email protected]
conf]# netstat -lntup |grep ng

tcp        0      0 0.0.0.0:80           0.0.0.0:*       LISTEN      40714/nginx       

4.5.6 查看配置文件的加载顺序

[[email protected]
logs]# /application/nginx/sbin/nginx -T

参数表明:

-T   : test configuration, dump it and exit

  
测试配置文件,并且加载一回,并出示加载的次第

4.5.7 【优化】调整 inculde的加载顺序,钦点第②个加载为conf

[[email protected]
conf]# vim nginx.conf

worker_processes  1;

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;

    include extra/blog.conf;

}

4.5.8 重启服务

[[email protected]
conf]# /application/nginx/sbin/nginx -t

nginx: the configuration file
/application/nginx-1.10.2/conf/nginx.conf syntax is ok

nginx: configuration file
/application/nginx-1.10.2/conf/nginx.conf test is successful

[[email protected]
conf]# /application/nginx/sbin/nginx -s reload

4.5.9 说明;

那样的安顿可以让用户通过IP访问的时候,访问到的网站是www的网站。

4.6 小名的配置

在安排文件中添加别称

[[email protected]
conf]# vim extra/www.conf

    server {

        listen       80;

        server_name  www.etiantian.org
ett.org;

        location / {

            root   html/www;

            index  index.html index.htm;

        }

        error_page   500 502 503 504 
/50x.html;

        location = /50x.html {

            root   html;

        }

    }

}

重启服务

[[email protected]
conf]# /application/nginx/sbin/nginx -s reload

修改hosts 进行走访测试

[[email protected]
www]# curl  ett.org

web01 www

4.7 status 状态模块

4.7.1 状态模块的布署

修改配置文件,添加三status模块

[[email protected]
conf]# 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.etiantian.org;

          location / {

            stub_status on;

            access_log   off;

          }

        }

    include extra/www.conf;

    include extra/bbs.conf;

    include extra/blog.conf;

}

反省安顿文件是不是正确

[[email protected]
conf]# /application/nginx/sbin/nginx -t

nginx: the configuration file
/application/nginx-1.10.2/conf/nginx.conf syntax is ok

nginx: configuration file
/application/nginx-1.10.2/conf/nginx.conf test is successful

重启服务

[[email protected]
conf]# /application/nginx/sbin/nginx -s reload

走访测试

 

说明:

以上页面内容音信根本会被zabbix监察和控制服务调取,形成图像音信

听闻图片音讯,从而判断nginx网站服务用户访问量意况

4.7.2 状态模块表达

参数

参数说明

Active connections

当前的活动客户端连接数量

accepts          

接受客户端连接的总数

handled          

处理的连接总数

requests         

客户端请求的总数

Reading          

nginx正在读请求头的当前连接数。

Writing          

nginx正在将响应写回客户端的当前连接数。

Waiting          

当前空闲客户端连接数等待一个请求。

4.8 nginx的日记功用

nginx的两种日志种类

谬误日志:记录nginx运行错误处境新闻

做客日志:记录用户访问日志新闻

法定表明

http://nginx.org/en/docs/ngx\_core\_module.html\#error\_log

4.8.1 定义错误日志音讯

系统默许配置

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

安顿错误日志,修改主配置文件

[[email protected]
logs]# vim ../conf/nginx.conf

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.etiantian.org;

          location / {

            stub_status on;

            access_log   off;

          }

        }

    include extra/www.conf;

    include extra/bbs.conf;

    include extra/blog.conf;

}

重启服务

[[email protected]
logs]# /application/nginx/sbin/nginx -t

nginx: the configuration file
/application/nginx-1.10.2/conf/nginx.conf syntax is ok

nginx: configuration file
/application/nginx-1.10.2/conf/nginx.conf test is successful

[[email protected]
logs]# /application/nginx/sbin/nginx -s reload

查阅错误日志消息

[[email protected]
logs]# tail  error.log

2017/10/25 11:41:55 [error] 40842#0: *7 open()
“/application/nginx-1.10.2/html/www/favicon.ico” failed (2: No such file
or directory), client: 10.0.0.1, server: www.etiantian.org, request:
“GET /favicon.ico HTTP/1.1”, host: “www.etiantian.org”, referrer:
http://www.etiantian.org/

4.8.2 访问日志配置

系统暗许配置

#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  logs/access.log  main;

修改访问日志配置–修改主配置文件

[[email protected]
www]# cat ../../conf/nginx.conf

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;

    log_format  main  ‘$remote_addr –
$remote_user [$time_local] “$request” ‘

                  ‘$status $body_bytes_sent “$http_referer” ‘

                  ‘”$http_user_agent” “$http_x_forwarded_for”‘;

 

          server{

          listen  80;

          server_name  status.etiantian.org;

          location / {

            stub_status on;

            access_log   off;

          }

        }

    include extra/www.conf;

    include extra/bbs.conf;

    include extra/blog.conf;

}

修改访问日志配置–修改虚拟主机配置文件

[[email protected]
www]# cat /application/nginx/conf/extra/www.conf

    server {

        listen       80;

        server_name  www.etiantian.org
ett.org;

        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;

        }

    }

4.8.3 【主要】访问日志消息表达

日记内容

10.0.0.1 – – [22/Oct/2017:16:04:54 +0800] “GET /
HTTP/1.1” 304 0 “-” “Mozilla/5.0 (Windows NT 10.0; WOW64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100
Safari/537.36” “-“

布局文件

‘$remote_addr – $remote_user [$time_local]
“$request” ‘

‘$status $body_bytes_sent “$http_referer” ‘

‘”$http_user_agent”
“$http_x_forwarded_for”‘;

日志音信验证

参数

日志内容

含义

$remote_addr

10.0.0.1

客户端ip地址

 

$remote_user

显示远程访问者用户信息

[$time_local]

[22/Oct/2017:16:04:54 +0800]

显示访问时间

$request

GET / HTTP/1.1"

请求行信息

$status

304

状态码

$body_bytes_sent

0

响应报文主体内容大小

$http_referer

 

$http_user_agent

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/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

记录客户端访问信息,例如:浏览器、手机客户端等

在并未特殊必要的意况下,采纳暗许的安排即可,越多能够设置的笔录日志信息的变量见:

http://nginx.org/en/docs/http/ngx\_httpJog\_module.html1

4.8.4 日志的切割

切割日志格局

01:利用脚本完结日志切割

粗略脚本

[[email protected]
logs]# cat /server/scripts/log_cut.sh

#!/bin/bash

 

mv /application/nginx/logs/access_www.log 
/application/nginx/logs/access_www_`date +%F`.log

/application/nginx/sbin/nginx -s reload

饱含判断的台本

[[email protected]
logs]# cat /server/script/cut_nginx_log.sh

# ! /bin/sh

Dateformat=’date +%Y%m%d’

Basedir= “/application/nginx”

Nginxlogdir=”$Basedir/logs”

Logname=”access_www”

[-d $Nginxlogdir ] && cd $Nginxlogdir || exit
1

[-f ${Logname}.log ] || exit 1

/bin/mv ${Logname}.log
${Dateformat}_${Logname}.log

$Basedir/sbin/nginx -s reload

02.行使连串自带切割软件拓展切割

cat /etc/logrotate.conf

4.9 集团要求解决(location应用)

   壹 、搭建好一台nginx的web服务器,配置好内网网卡地址与外网网卡地址

   二 、web服务器的网站域名为www.etiantian.org 站点目录为
html/www

   三 、供给内网能够访问
www.etiantian.org/AV 能源

   四 、必要外网不得以访问
www.etiantian.org/AV 能源

4.9.1 须要处理 –location的利用

① 、定位须要控制的财富

     location == if

修改配置文件

[[email protected]
extra]# cat www.conf

    server {

        listen       80;

        server_name  www.etiantian.org;

        location / {

            root   html/www;

            index  index.html index.htm;

        }

        location /AV  {

            root  html/www;

            index index.html index.htm;

            allow 172.16.1.0/24;

            deny  all;

        }

    }

 

4.9.2 location 语法

location 指令的功能是基于用户请求的U翼虎I来实施差别的利用。

locationn使用的语法为

location [=|~|~*|^~] uri {

  ….

}

 

location 语法表达表

location

[=|~|~*|^~]

uri

{….}

指令

匹配标识

匹配的网站地址

匹配URI后要执行的配置段

 

~ 与~* 的区别

u  ~  匹配内容分别轻重缓急写

u  ~* 匹配内容不区分的小写

u  !~ 取反

u  ^~ 但五个门户差不离同时设有,优先匹配 ^~匹配的始末;不做正则表明式的检查 (优先处理)

4.9.3 官方配置示范

location = / {

    [ configuration A ]

}

 

location / {

    [ configuration B ]

}

 

location /documents/ {

    [ configuration C ]

}

 

location ^~ /images/ {

    [ configuration D ]

}

 

location ~* \.(gif|jpg|jpeg)$ {

    [ configuration E ]

}

说明:

“/”请求将同盟配置A,

“/index.html”请求将匹配配置B,

“/documents/document.html”请求将匹配配置C,

“/images/1.gif”请求将万分配置D,

“/documents/1.jpg”请求将卓越配置E.

 

不等uri及特殊字符组合匹配的次第表明

顺序

不用URI及特殊字符组合匹配

匹配说明

1

location = / {}

精确匹配 /

2

location ^~ /image/{

匹配常规字符串,不做正则表达式匹配检查

3

location ~* \.(gif|jpg|jpeg)$ {

正则匹配

4

location /documents/ {

匹配常规字符串,如果有正则,则优先匹配正则

5

location / {

所有location 都不能匹配后的默认匹配

4.9.4 【测试】测试location的访问

4.9.4.1  修改配置文件

概念差别的location再次回到不一样的数值

[[email protected]
extra]# vim www.conf

server {

    listen       80;

    server_name  www.etiantian.org
etiantian.org;

    root   html/www;

    location / {

       return 401;

    }

    location = / {

        return 402;

    }

    location /documents/ {

        return 403;

    }

    location ^~ /images/ {

        return 404;

    }

    location ~* \.(gif|jpg|jpeg)$ {

    return 500;

    }

    access_log logs/access_www.log main;

}

4.9.4.2  访问测试

依照请求例外uri的归来值验证
location的配备。

[[email protected]
~]# curl -I -w “%{http_code}\n” -o /dev/null -s 
www.etiantian.org/documents

401

[[email protected]
~]# curl -I -w “%{http_code}\n” -o /dev/null -s 
www.etiantian.org

402

[[email protected]
~]# curl -I -w “%{http_code}\n” -o /dev/null -s 
www.etiantian.org/documents/ss.jpg

500

[[email protected]
~]# curl -I -w “%{http_code}\n” -o /dev/null -s 
www.etiantian.org/documents

401

[[email protected]
~]# curl -I -w “%{http_code}\n” -o /dev/null -s 
www.etiantian.org/documents/

403

[[email protected]
~]# curl -I -w “%{http_code}\n” -o /dev/null -s 
www.etiantian.org/images/1.jpg

404

4.10 rewrite 模块的施用–地址重写

4.10.1 rewrite 重写模块

  将地址音讯进行重写

rewrite 语法格式

rewrite regex replacement [flag]

rewrite应用标签:server、location、if

4.10.2 rewrite模块五个职能

  1. 贯彻网站地址音信跳转

  2. 福寿绵绵伪静态

4.10.3 方法一 使用if判断

[[email protected]
extra]# cat www.conf

    server {

        listen       80;

        server_name  www.etiantian.org
ett.org;

if ($host ~* “^etiantian.org$”) {

rewrite ^/(.*) http://www.etiantian.org/$1
permanent;

}

        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;

        }

    }

测试

[[email protected]
www]# curl  etiantian.org -L

web01 www

 

4.10.4 方法二  再添加上3个区块

server {   

        server_name etiantian.org;

        rewrite ^/(.*) http://www.etiantian.org/$1
permanent;

}  

4.10.5 nginx 的rwite重写集团应用场景

图片 11 
能够调动用户浏览的URAV4L,使其看起来更规范,合乎开发及产品人士的供给。

图片 12 
为了让追寻引擎收音和录音网站内容,并让用户体验更好,集团会将动态U冠道L地址伪装成静态地址提供劳动。

图片 13 
网站换新域名后,让旧域名的拜会跳转到新的域名上,例如:让京东的360buy换来了jd.com。

图片 14 
遵照特殊变量、目录、客户端的音讯进行U哈弗L跳转等。

图片 15 
表达:开源软件看似wordpress的,官方都会对伪静态配置实行验证

4.11 nginx 的造访认证

4.11.1 修改nginx的相关布置文件

vim extra/www.conf

location / {

        root   html/www;

        index  index.html index.htm;

        auth_basic           “oldboy
training”;

        auth_basic_user_file  
/application/nginx/conf/htpasswd;

 }

4.11.2 创造密码文件

注: 那里运用的htpasswd命令暗中同意是从未有过的,必要经过yum install httpd-tools -y
安装

[[email protected]
extra]# htpasswd -c /application/nginx/conf/htpasswd oldboy

New password:

Re-type new password:

Adding password for user oldboy

参数表达:

-c  Create a new file.

    创设二个新的密码文件

-b  Use the password from the command line rather
than prompting for it.

利用免交互的不二法门输入用户的密码新闻

htpasswd参数表达

参数

参数说明

-c

创建一个新文件。

-n

不更新文件; 显示结果。

-m

强制MD5密码加密。

-d

强制CRYPT加密密码(默认)。

-p

不加密密码(明文)。

-s

强制SHA加密密码。

-b

使用命令行中的密码,而不是提示。(免交互)

-D

删除指定的用户。

 

4.11.3 更改密码文件权限

[[email protected]
extra]#  chmod 400 /application/nginx/conf/htpasswd    

[[email protected]
extra]#  chown -R www.www /application/nginx/conf/htpasswd

[[email protected]
extra]# cat /application/nginx/conf/htpasswd

oldboy:e3OfMiJThE0Qg

4.11.4 重启服务: 配置修改后要重启服务

[[email protected]
extra]# /application/nginx/sbin/nginx -t

nginx: the configuration file
/application/nginx-1.10.2/conf/nginx.conf syntax is ok

nginx: configuration file
/application/nginx-1.10.2/conf/nginx.conf test is successful

[[email protected]
extra]# /application/nginx/sbin/nginx -s reload

4.11.5 访问测试

行使交互式输入密码

[[email protected]
www]# curl www.etiantian.org -uoldboy

Enter host password for user ‘oldboy’:123456

web01 www

动用免交互输入密码

[[email protected]
www]# curl www.etiantian.org -uoldboy:123456

web01 www

401荒唐表明: 需求验证,可是尚未表明

 

http://www.bkjia.com/Linuxjc/1231347.htmlwww.bkjia.comtruehttp://www.bkjia.com/Linuxjc/1231347.htmlTechArticlenginx服务部署 表明,nginx服务配置 第三章
常用的软件 1.1 常用来提供 静态服务 的软件 Apache : 那是中型小型型 Web
服务的主流, Web 服务器中的老…

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图