Nginx安装及配置实战

目录

一、nginx的安装与使用

二、nginx配置实战

1.当首文件不存在--利用nginx服务搭建文件共享服务器

2.虚拟主机概念和类型

3.nginx配置文件规范化

4.别名配置

5.status状态模块:

状态模块说明

6.nginx的日志功能

7.location应用

8.rewrite 模块的使用--地址重写

9.nginx的访问认证


一、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

二、nginx配置实战

1.当首文件不存在--利用nginx服务搭建文件共享服务器

通过配置  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

然后客户端进行访问:

Nginx安装及配置实战_第1张图片

2.虚拟主机概念和类型

虚拟主机概念

  虚拟主机就是把运行在因特网上的服务器分成一台台“虚拟主机”,每台虚拟主机都可以一个网站,可以具有独立的域名,具有完整的网络服务功能(www,ftp,email),同一台主机上的虚拟主机之间是完全独立的,从用户来看,每一台虚拟主机和一台独立的主机完全一样。

利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程。虚拟主机提供了在同一台服务器、同一组Nginx进程上运行多个网站的功能。

所谓虚拟主机,在Web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是ip或端口.具有独立的程序及资源目录,可以独立地对外提供服务供用户访问。

这个独立的站点在配置里是由一定格式的标签段标记的,对于Apache软件来说,一个虚拟主机的标签段通常被包含在以的此,而Nginx软件则使用一个server{}标签来标示一个虚拟主机。一个Web服务里可以有多个虚拟主机标签对,即可以同时支持多个虚拟主机站点。

虚拟主机类型:

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

3.nginx配置文件规范化

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

4.别名配置

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

5.status状态模块:

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          

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

6.nginx的日志功能

      日志分类:

          错误日志:记录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

7.location应用

 要求内网能够访问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  ^~ 但多个匹配同时存在,优先匹配 ^~匹配的内容;不做正则表达式的检查 (优先处理)

8.rewrite 模块的使用--地址重写

将地址信息进行重写

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;

}

9.nginx的访问认证

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

 

你可能感兴趣的:(Linux服务篇)