欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx入门基础配置

程序员文章站 2022-06-13 15:33:29
...

一、Nginx介绍


Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的,它已经在该站点运行超过两年半了。Igor Sysoev在建立的项目时,使用基于BSD许可,可以通过官网查看它的信息。

二、实验环境


操作系统:redhat 6.5
selinux iptables off

主机名 IP 安装服务 功能说明
server1 10.10.10.1 Nginx WEB服务器
server2 10.10.10.2 Nginx WEB服务器
dream 10.10.10.250 测试访问WEB服务器

三、编译安装Nginx


1、下载地址

Nginx下载地址:http://nginx.org/en/download.html
Nginx RPM包下载地址:http://nginx.org/packages/rhel/7/x86_64/RPMS/(6的话把7换成6即可)
echo-nginx-module-0.61第三方模块下载链接:https://github.com/openresty/echo-nginx-module/tags
百度网盘地址: https://pan.baidu.com/s/1NJiPYioi_843WfqMAI4PsA 密码: wdf8

[root@server1 ~]# wget http://nginx.org/download/nginx-1.14.0.tar.gz
[root@server1 ~]# wget https://github.com/openresty/echo-nginx-module/archive/v0.61.tar.gz

2、解压tar包

[root@server1 ~]# tar xf v0.61.tar.gz
[root@server1 ~]# tar xf nginx-1.14.0.tar.gz

3、安装Nginx

[root@server1 ~]# yum install -y gcc pcre-devel openssl-devel
[root@server1 ~]# cd nginx-1.14.0
[root@server1 nginx-1.14.0]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_sub_module  --with-http_ssl_module --add-module=/root/echo-nginx-module-0.61/
[root@server1 nginx-1.14.0]# make && make install
[root@server1 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/

四、Nginx基础配置


1、修改用户最大链接数和进程数

[root@server1 ~]# useradd nginx
[root@server1 ~]# lscpu                 ###虚拟机修改设置即可,查看cpu个数

Nginx入门基础配置

[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf

Nginx入门基础配置

worker_connections:单个进程最大连接数(最大连接数=连接数*进程数)

[root@server1 ~]# vim /etc/security/limits.conf 
nginx           -       nofile          65535

2、查看结果

[aaa@qq.com ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[aaa@qq.com ~]# nginx 

Nginx入门基础配置
Nginx入门基础配置

3、修改端口范围

(1)通过命令修改(临时生效)
[root@server1 ~]# sysctl -a|grep range
[root@server1 ~]# sysctl -w net.ipv4.ip_local_port_range="1024 65535"

Nginx入门基础配置

(2)修改配置文件(永久生效)
[root@server1 ~]# vim /etc/sysctl.conf             ###在配置文件中添加
net.ipv4.ip_local_port_range = 1024 65535

[root@server1 ~]# sysctl -p                       ###刷新
[root@server1 ~]# sysctl -a|grep range

Nginx入门基础配置

4、文件传输设置

(1)配置修改
[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf

Nginx入门基础配置

(2)参数介绍
include              ###文件扩展名与文件类型映射表
default_type         ###默认文件类型
sendfile             ###默认设置打开,从硬盘数据直接传输到协议栈。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的uptime
tcp_nopush           ###当开启sendfile是,此参数开启才有效果。开启时会调用tcp_cork方法,数据包会等到最大时在一次传输出去,这样有利于解决网络堵塞。
tcp_nodelay          ###延时,等待数据多点在一起发,提高磁盘I/O
keepalive_timeout    ###连接超时

5、链接数限制

官网参考链接:https://docs.nginx.com/nginx/admin-guide/security-controls/controlling-access-proxied-http/

[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf

Nginx入门基础配置

limit_conn addr 1:限制每个ip访问lmit.html文件时候,最多只能有一个在线,否则其余的都要返回不可用(addr要跟 limit_conn_zone的变量对应)

6、启动Nginx

[aaa@qq.com ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[aaa@qq.com ~]# nginx 

Nginx入门基础配置

7、测试

(1)建立发布目录
[root@server1 ~]# mkdir /usr/local/nginx/html/download
[root@server1 ~]# ls /usr/local/nginx/html/download
dream.jpg
(2)压力测试
[root@dream ~]# ab -c 10 -n 1000 http://10.10.10.1/download/dream.jpg

Nginx入门基础配置

8、限制带宽

[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf

Nginx入门基础配置

[root@server1 ~]# nginx -s reload

9、查看限制后的结果

###访问日志目录:/usr/local/nginx/logs/access.log
[root@dream ~]# ab -c 10 -n 1000 http://10.10.10.1/download/dream.jpg

Nginx入门基础配置

10、限制请求速率

[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf

Nginx入门基础配置

limit_req_zone:表示当相同的ip地址并且访问相同的uri,会导致进入limit req的限制(每秒1个请求)
burst=5 表示最大延迟请求数量不大于5。

[root@server1 ~]# nginx -s reload

11、查看结果

(1)压力测试
[root@dream ~]# ab -c 10 -n 1000 http://10.10.10.1/download/dream.jpg

Nginx入门基础配置

(2)访问日志
[root@server1 ~]# cat /usr/local/nginx/logs/access.log

Nginx入门基础配置

五、Nginx配置Https


1、配置nginx.conf

[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf

Nginx入门基础配置

2、生成证书

[root@server1 ~]# cd /etc/pki/tls/certs/
[root@server1 certs]# make cert.pem
[root@server1 ~]# cp /etc/pki/tls/certs/cert.pem /usr/local/nginx/conf/

Nginx入门基础配置

3、重新加载配置

[aaa@qq.com ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[aaa@qq.com ~]# nginx -s reload

4、测试

(1)加入hosts解析
[aaa@qq.com ~]# vim /etc/hosts
10.10.10.1  www.dream.com
(2)浏览器中进行访问
https://www.dream.com

Nginx入门基础配置
Nginx入门基础配置
Nginx入门基础配置

六、Rewrite模块配置


1、rewrite模块

  • ! :表示取反

  • ~ :表示为区分大小写匹配

  • ~* :表示为不区分大小写匹配

  • -f和!-f:用来判断是否存在文件

  • -d和!-d:用来判断是否存在目录

  • -e和!-e:用来判断是否存在文件或目录

  • -x和!-x:用来判断文件是否可执行

2、重定向配置

(1)临时从定向二种配置方法
[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf

Nginx入门基础配置
Nginx入门基础配置

(2)查看结果
[root@dream ~]# curl -I www.dream.com

Nginx入门基础配置

3、访问文件不同进行重定向

(1)配置nginx.conf

Nginx入门基础配置

[root@server1 ~]# nginx -s reload
(2)建立默认发布文件
[root@server1 ~]# mkdir /www
[root@server1 ~]# echo www.dream.com >/www/index.html
[root@server1 ~]# mkdir /bbs
[root@server1 ~]# echo bbs.dream.com >/bbs/index.html
(3)设置Hosts解析

Nginx入门基础配置

(4)测试

通过浏览器访问www.dream.com访问显示为:www.dream.com,www.dream.com/bbs访问显示:bbs.dream.com

[root@dream ~]# curl -I www.dream.com
[root@dream ~]# curl -I www.dream.com/bbs

Nginx入门基础配置

4、限制直接通过IP进行访问

(1)配置nginx.conf
[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf

Nginx入门基础配置

[root@server1 ~]# nginx -s reload
(2)结果

访问IP返回503错误,访问域名正常访问!!!

http://10.10.10.1/

Nginx入门基础配置
Nginx入门基础配置

(3)加入从定向

直接通过IP(10.10.10.1)访问会直接访问到百度!!!

[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf

Nginx入门基础配置

[root@server1 ~]# nginx -s reload
[root@dream ~]# curl -I 10.10.10.1

Nginx入门基础配置

5、限制具体IP访问

限制IP对域名www.dream.com访问,这里我们来限制server2(10.10.10.2)访问!!!

(1)配置nginx.conf
[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf

Nginx入门基础配置

[root@server1 ~]# nginx -s reload
(2)测试
# curl -I www.dream.com

Nginx入门基础配置
Nginx入门基础配置
Nginx入门基础配置

6、限制访问发布页面

(1)配置nginx.conf
[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf

Nginx入门基础配置

[root@server1 ~]# nginx -s reload
(2)测试
[root@server1 ~]# echo "yayaya" >/www/dream.sh
[root@server1 ~]# chmod +x /www/dream.sh

Nginx入门基础配置

7、Last和Break区别

(1)配置nginx.conf
[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf

Nginx入门基础配置

[root@server1 ~]# nginx -s reload
(2)查看结果

Nginx入门基础配置

8、盗链配置

(1)server2中安装Nginx
[root@server1 ~]# scp -rp /usr/local/nginx/ aaa@qq.com:/usr/local/
[root@server2 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
(2)配置
[root@server2 ~]# useradd nginx
[root@server2 ~]# vim /usr/local/nginx/conf/nginx.conf
user  nginx;
worker_processes  auto;
events {
    use epoll;
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile       on;
    tcp_nopush     on;
    tcp_nodelay    on;
    keepalive_timeout  65;
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    server {
        listen       80;
    rewrite ^(.*) http://www.baidu.com;
    location /download/ {
            limit_conn addr 1;
        limit_req zone=one burst=5;
    }
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
    listen 80;
    server_name  abc.dream.com;
    location / {
        charset utf-8;
        root /abc;
        index index.html;
    }
    }
}
(3)配置默认发布页面
[aaa@qq.com ~]# mkdir /abc
[aaa@qq.com ~]# vim /abc/index.html
<html>
<body>
<br>盗链图片</br>
<img src="http://www.dream.com/dream.jpg">
</body>
</html>

[aaa@qq.com ~]# nginx -s reload
(4)查看结果

可以发现通过访问server2来访问到server1中的图片!!!

[root@server1 ~]# cp /usr/local/nginx/html/download/dream.jpg /www/     ###复制照片到发布目录
[root@dream ~]# cat /etc/hosts

http://abc.dream.com/              ###真机浏览器

Nginx入门基础配置
Nginx入门基础配置

(5)配置盗链

expires 30:过期时间30天!!!

[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf

Nginx入门基础配置

(6)重新加载Nignx
[root@server1 ~]# ls /bbs/               ###在/bbs目录中添加照片
daolian.jpg  index.html

[root@server1 ~]# nginx -s reload

Nginx入门基础配置

七、stub_status模块


1、查看是否安装此模块

[root@server1 ~]# nginx -V             ###V:大写

Nginx入门基础配置

2、修改配置

[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf

Nginx入门基础配置

[root@server1 ~]# nginx -s reload

3、查看结果

http://bbs.dream.com/status

Nginx入门基础配置