nginx配置文件详解


安装nginx
nginx

访问控制

用于location段
allow :设定允许哪台或哪些主机访问,多个参数间用空格隔开
deny :设定禁止哪台或那些主机访问,多个参数用空格隔开

allow 192.168.1.1/32 172.16.0.0/16;
deny all;       #可写ip或网段

修改配置文件

   location / {
            root   /www;
            index  index.html index.htm index.php;
            deny 192.168.118.100/24;         #拒绝本机
        }

在这里插入图片描述

基于用户认证

auth_basic "欢迎信息"
auth_basic_user_file "/path/to/user_anth_file"
###
user_anth_file内容格式为:
username:password

这里的密码为加密后的密码串,建议用htpasswd来创建此文件

htpasswd -c -m /path/to/.user_auth_file USERNAME

安装httpd-tools.x86_64 0:2.4.6-80.el7.centos.1

[root@nginx ~]# yum -y install httpd-tools
[root@nginx ~]# htpasswd -c -m /usr/local/nginx/dxk dxk    #用户为dxk
New password:
Re-type new password:
Adding password for user dxk
[root@nginx ~]# cat /usr/local/nginx/dxk
dxk:$apr1$GFSNqOA0$DxMTeAfeV.fYX9GPflHKu.     #用户名和加密后的密码

修改nginx的配置文件

[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
  location / {
            root   /www;
            index  index.html index.htm index.php;
            #新增这两行
            auth_basic "welcome";       #访问注释信息
            auth_basic_user_file "/usr/local/nginx/dxk";     #登录的目录
        }

重启nginx

[root@nginx ~]# 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
#语法没有问题
[root@nginx ~]# nginx -s reload

访问nginx,弹出登录页面
在这里插入图片描述
成功登录,可看到nginx默认页
在这里插入图片描述

https配置

OpenSSL实现私有CA

CA(Certificate Authority)是数字证书认证中心的简称,是指发放、管理、废除数据证书的机构。

CA的作用是检查证书持有者身份的合法性,并签发证书(在证书上签字),以防证书被伪造或篡改,以及对证书和密钥进行管理
CA的配置文件:/etc/pki/tls/openssl.cnf

a) CA生成一对密钥

cd /etc/pki/CA 
(umask 077;openssl genrsa -out private/cakey.pem 2048)    #生成密钥,括号必须要
openssl rsa -in private/cakey.pem -pubout    #提取公钥
 b) CA生成自签署证书

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365   
#生成自签署证书
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
#下面内容自定义
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:hb
Locality Name (eg, city) [Default City]:wh
Organization Name (eg, company) [Default Company Ltd]:www.dxk.com
Organizational Unit Name (eg, section) []:dxk
Common Name (eg, your name or your server's hostname) []:dxk
Email Address []:123.com

openssl x509 -text -in cacert.pem    #读出cacert.pem证书的内容
mkdir certs newcerts crl

c) 客户端(例如nginx服务器)生成密钥

cd /usr/local/nginx && mkdir ssl && cd ssl
(umask 077;openssl genrsa -out nginx.key 2048)
 d) 客户端生成证书签署请求

openssl req -new -key nginx.key -days 365 -out nginx.csr
e) 客户端把证书签署请求文件发送给CA     
#在同一台机子上可省略
scp nginx.csr root@CA端IP:/root
f) CA签署客户端提交上来的证书

openssl ca -in /root/nginx.csr -out nginx.crt -days 365
   g) CA把签署好的证书httpd.crt发给客户端
scp nginx.crt root@客户端IP:/usr/local/nginx/ssl/

修改配置文件

[root@nginx ssl]# vim /usr/local/nginx/conf/nginx.conf
 # HTTPS server
    #
    #取消下面的注释
    server {
        listen       443 ssl;
        ###这三行配置文件
        server_name  localhost;
        ssl_certificate      cert.pem;
        ssl_certificate_key  cert.key;
修改为  (其他可不变)
       server_name  www.dxk.com;
        ssl_certificate      /usr/local/nginx/ssl/nginx.crt;
        ssl_certificate_key  /usr/local/nginx/ssl/nginx.key;
###
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }

}

重启nginx
查看我生成的证书
在这里插入图片描述

开启状态页面

开启status

location /status {
  stub_status {on | off};
  allow 172.16.0.0/16;
  deny all;
}

修改配置文件

#在server下增加下面内容
location /status {
            stub_status on;
       }

测试状态
在这里插入图片描述

状态码表示的意义
Active connections 2当前所有处于打开状态的连接数
accepts总共处理的多少个连接
handled成功创建多少握手
requests总共处理了多少个请求
Readingnginx读取到客户端的Header信息数,表示正处于接收请求状态的连接数
Writingnginx返回给客户端的Header信息数,表示请求已经接收完成,且正处于处理请求或发送响应的过程的连接数
Waiting开启keep-alive的情况下,这个值等于active -(reading+writing),意思就是Nginx以处理完正在等候下一次请求指令的驻留连接

rewrite

语法:rewrite regex replacement flag;,如:

rewrite ^/images/(.*\.jpg)$ /imgs/$1 break;
[root@nginx ~]# cd /usr/local/nginx/html/
[root@nginx html]# mkdir haha
#上传一张图片改名为haha.jpg

修改配置文件

 server {
        listen       80;
  #      server_name  192.168.118.128;

        charset utf-8;

        access_log  logs/host.access.log  main;

        location / {
            root   /www;
            index  index.html index.htm index.php;
        }
        #增加如下内容
         location /haha {
               root html;
               index index.html;
        }

重启服务,访问网页
在这里插入图片描述

将haha目录改为lala
[root@nginx html]# vim /usr/local/nginx/conf/nginx.conf
[root@nginx html]# mv haha/ lala/   
[root@nginx html]# ll
总用量 1260
-rw-r--r--. 1 root root    537 10月 18 08:42 50x.html
-rw-r--r--. 1 root root    612 10月 18 08:42 index.html
drwxr-xr-x. 2 root root     22 10月 24 16:20 lala

修改配置文件

         location /haha {
               root html;
               index index.html;
               rewrite ^/haha/(.*\.jpg)$ /lala/$1 break;    #增加这一行
        }

重启服务,重新请求
在这里插入图片描述
可看到虽然没有haha目录,但仍可访问到图片,URL重写成功
我们也可以让url做多次跳转,最多可以跳20次
二次跳转实例
实验思路
客户端发出的请求改变后的URL(haha)———>改变后的URL(lala )——>https://blog.csdn.net/qq_43094192
修改配置文件

location /haha {
               root html;
               index index.html;
               rewrite ^/haha/(.*\.jpg)$ /lala/$1 last;       #将break换成last
        }     
        #增加如下内容,再次跳转到博客链接结束
         location /lala {
               rewrite  ^/lala/(.*\.jpg)$ https://blog.csdn.net/qq_43094192 break;
        }
重启nginx

在这里插入图片描述
直接跳转到博客链接
在这里插入图片描述

浏览器分离案例

 if ($http_user_agent ~ Firefox) {                         \\火狐浏览器
rewrite ^(.*)$ /firefox/$1 break;
}
if ($http_user_agent ~ MSIE) {                             \\IE浏览器
rewrite ^(.*)$ /msie/$1 break;
}
if ($http_user_agent ~ Chrome) {                           \\谷歌浏览器
rewrite ^(.*)$ /chrome/$1 break;
}

防盗链接案例

location ~* \.(jpg|gif|jpeg|png)$ {
  valid_referer none clocked www.baidu.com;                     \\锁定网址
  if ($invalid_referer) {
  rewrite ^/ http://www.baidu.com/403.html;                          \\未进入报错403
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值