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库
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
- / 基于uri目录匹配
- =表示把URI作为字符串,以便与参数中的uri做完全匹配。
- ~表示正则匹配URI时是字母大小写敏感的。
- ~*表示正则匹配URI时忽略字母大小写问题。
- ^~表示正则匹配URI时只需要其前半部分与uri参数匹配即可。
1.配置第一个静态WEB服务
- 创建站点目录 mkdir -p /usr/www/cym
- 编写静态文件
配置 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.配置案例
- 动静分离实现
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(基于目录动静分离)
访问
基于正则动静分离:
访问
- 防盗链
# 加入至指定location 即可实现
valid_referers none blocked *.nginx_test.com;
if ($invalid_referer) {
return 403;
}
- 下载限速
下载限速:
location /download {
limit_rate 1m;
limit_rate_after 30m;
}
limit_rate :是限速的值。
limit_rate_after:是大于10m的文件才被限速
- 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;
}