nginx的安装和核心模块与配置实践

1.安装

安装环境准备:

(1)linux 内核2.6及以上版本:

只有2.6之后才支持epool ,在此之前使用select或pool多路复用的IO模型,无法解决高并发压力的问题。通过命令uname -a 即可查看。

#查看 linux 内核

uname -a

(2)GCC编译器

GCC(GNU Compiler Collection)可用来编译C语言程序。Nginx不会直接提供二进制可执行程序,只能下载源码进行编译。

(3)PCRE库

PCRE(Perl Compatible Regular Expressions,Perl兼容正则表达式)是由Philip Hazel开发的函数库,目前为很多软件所使用,该库支持正则表达式。

(4)zlib库

扫描二维码关注公众号,回复: 4226635 查看本文章

zlib库用于对HTTP包的内容做gzip格式的压缩,如果我们在nginx.conf里配置了gzip on,并指定对于某些类型(content-type)的HTTP响应使用gzip来进行压缩以减少网络传输量。

(5)OpenSSL开发库

如果我们的服务器不只是要支持HTTP,还需要在更安全的SSL协议上传输HTTP,那么就需要拥有OpenSSL了。另外,如果我们想使用MD5、SHA1等散列函数,那么也需要安装它。

上面几个库都是Nginx 基础功能所必需的,为简单起见我们可以通过yum 命令统一安装。

#yum 安装nginx 环境(因为本人已经安装过了,接不运行下面指令了)

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-devel

源码获取:

nginx 下载页:http://nginx.org/en/download.html 。

# 下载nginx 最新稳定版本

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

#解压

tar -zxvf nginx-1.14.0.tar.gz

最简单的安装:(默认安装的路径事/usr/local/nginx)

# 全部采用默认安装

./configure

然后生成一个objs的目录,里面存放的都是一些模块源代码

先前通过./configure 打出来的只是源代码

我们还需要通过make 来构建的可执行文件,但现在还没有安装到/usr/local/nginx

如果报以下的错误就是缺少nginx的安装环境:

make: *** No rule to make target `build', needed by `default'. Stop.

还需要通过make install把它安装进/usr/local/nginx

安装2:前面是直接安装的没有指定目录也没有添加模块,以下的安装是基于参数构建

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-debug

然后make命令打出来新的源代码(原来安装过的,只要把objs下的nginx替换掉安装目录下/usr/local/nginx/sbin/,不过如果这样子做根据需要的是否对nginx备份,如果没有安装的就使用make install)

安装就到这结束了,很简单的,只要注意nginx的安装环境完备就可以了,错也不怕,直接删了重装就好了,Linux中没有widow中所谓的注册列表之类的,不对删了重装便可。


控制命令:

#默认方式启动:

./sbin/nginx

访问nginx curl 127.0.0.1(本地主机的访问)

或者可以直接通过浏览器访问(直接访问主机的地址)

#指定配置文件启动

./sbing/nginx -c /tmp/nginx.conf

#指定nginx程序目录启动

./sbin/nginx -p /usr/local/nginx/

#快速停止

./sbin/nginx -s stop

#优雅停止

./sbin/nginx -s quit

# 热装载配置文件 

./sbin/nginx -s reload

# 重新打开日志文件

./sbin/nginx -s reopen


Nginx 配置与使用

基本配置介绍说明:

(1)监听端口

语法:listen address:

默认:listen 80;

配置块:server

(2)主机名称

语法:server_name name[……];

默认:server_name "";

配置块:server

server_name后可以跟多个主机名称,如server_name www.testweb.com、download.testweb.com;。 支持通配符与正则

(3)location

语法:location[=|~|~*|^~|@]/uri/{……}

配置块:server

  1. / 基于uri目录匹配
  2. =表示把URI作为字符串,以便与参数中的uri做完全匹配。
  3. ~表示正则匹配URI时是字母大小写敏感的。
  4. ~*表示正则匹配URI时忽略字母大小写问题。
  5. ^~表示正则匹配URI时只需要其前半部分与uri参数匹配即可。

1.配置第一个静态WEB服务

  1. 创建站点目录 mkdir -p /usr/www/cym
  2. 编写静态文件

配置 nginx.conf(vim conf/niginx.conf 在nginx的安装目录中)

配置server

配置location

index index.html是配置一个默认的页面

配置完之后可以检测文件是否有错

然后启动nginx  

 如果nginx本来就启动的使用热部署就可以了

然后通过浏览器就可以访问了(简单说一下本人是使用了域名的转换的,如www.nginx_test.com,如果没有应该使用虚拟机的ip地址访问)

 如果是报403的

 403是没有权限访问,如果是这样子,就修改conf/nginx.conf的配置文件,不要使用默认用户

2.配置案例

  1. 动静分离实现

server {

        listen 80;

        server_name www.nginx_test.com *.nginx_test.com ;

        root /usr/www/cym;

        location / {

                index index.html;

        }

        location /static {

         alias /usr/www/static;

        }

 }

基于正则动静分离

location ~* \.(gif|jpg|png|css|js)$ {

      root /usr/www/static;

}

创建静态站点

配置 location /static(基于目录动静分离)

访问

 基于正则动静分离:

 访问

  1. 防盗链

# 加入至指定location 即可实现

valid_referers none blocked *.nginx_test.com;

 if ($invalid_referer) {

       return 403;

}

 

  1. 下载限速

下载限速:

location /download {

    limit_rate 1m;

    limit_rate_after 30m;

}

limit_rate :是限速的值。

limit_rate_after:是大于10m的文件才被限速

  1. IP 黑名单

创建IP黑名单

# 创建黑名单文件

echo 'deny 255.255.255.255;' >> ip.black

#http 配置块中引入 黑名单文件

#http 配置块中引入 黑名单文件

include       ip.black;

访问

3.日志配置

#基于域名打印日志

access_log logs/$host.access.log main;

访问后日志的输出

error日志的设置

语法:error_log /path/file level;

默认:error_log logs/error.log error;

level是日志的输出级别,取值范围是debug、info、notice、warn、error、crit、alert、emerg,

针对指定的客户端输出debug级别的日志

语法:debug_connection[IP|CIDR]

events {

debug_connection 192.168.0.147; 

debug_connection 10.224.57.0/200;

}

 

猜你喜欢

转载自blog.csdn.net/qq_40368860/article/details/83790867
今日推荐