nginx配置文件的详解

nginx作为一个反向代理器和负载均衡器,它的优点体现在许多方面,我们先从配置文件入手,看看nginx可以实现的功能:在有nginx服务的机器中做

虚拟主机技术主要应用于HTTP(Hypertext Transfer Protocol,超文本传输协议)服务,将一台服务器的某项或者全部服务内容逻辑划分为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬件资源。
cd  /usr/local/lnmp/nginx/conf
vim   nginx.conf   ##设置虚拟服务器##在大括号里面加
server{
        listen  80;
        server_name  www.westos.org;
       location / {
      root  /www1;
      index  index.html;
}
}
server{
        listen  80;
        server_name  bbs.westos.org;
       location / {
      root  /www2;
      index  index.html;
}
}


mkdir   /www1
vim  /www1/index.html   (www.westos.org)
mkdir   /www2
vim   /www2/index.html  (bbs.westos.org)


nginx  -t
nginx  -s  reload
去真迹里面看解析
vim /etc/hosts
172.25.254.1    www.westos.org   bbs.westos.org


curl  www.westos.org
curl  bbs.westos.org   ##虚拟机的轮询


如何设置为https模式
cd /usr/local/lnmp/nginx/conf/
vim  nfinx.conf   ##打开https有关的东西
  server {
       listen       443 ssl;
       server_name  www.westos.org;

       ssl_certificate      cert.pem;
       ssl_certificate_key  cert.pem;

       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;

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

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

pwd     /usr/local/lnmp/nginx/conf
##做证书
cd  /etc/pki/
ls
cd  tls
ls
cd  certs
ls###Makefile是做证书的文件


make   cert.pem(cn,shaanxi,xa"an,westos,linux,server1,root@localhost)


ls
ll  cert.pem
cp  cert.pem   /usr/local/lnmp/nginx/conf


nginx  -t
nginx  -s  reload
在真迹测试: https://www.westos.org  ##进去是加密文件

nginx的重定向
cd  /usr/local/lnmp/nginx/conf
vim  nginx.conf
server{
        listen  80;
        server_name  www.westos.org  ;
    rewrite  ^/(.*)$ https://www.westos.org   permanent;
    location / {
      root  /www1;
      index  index.html;
}
}


nginx  -s reload
不加permanent  是临时加载302,加permanent 是永久加载301;
在真迹里面测试:curl  -I    www.westos.org##可以看见重定向到

cd  /usr/local/lnmp/nginx/conf
vim  nginx.conf
server{
        listen  80;
        server_name  www.westos.org  ;
    rewrite  ^/(.*)$ https://www.westos.org/$1  permanent;
    location / {
      root  /www1;      ##底下4行可以注释调
      index  index.html;
}
}


nginx  -s reload
在真迹里面测试:curl  -I    www.westos.org/index.html##可以看见重定向到相应的位置https://www.westos.org/index.html


www.westos.org和westos.org访问的是同一个地方
server{
        listen  80;
        server_name  www.westos.org westos.org ;
    rewrite  ^/(.*)$ https://www.westos.org/$1  permanent;
    location / {
      root  /www1;      ##底下4行可以注释调
      index  index.html;
}
}

nginx  -s  reload


如果是www.westos.org/bbs重定向到http://bbs.westos.org;
server{
        listen  80;
        server_name  www.westos.org westos.org ;
    rewrite  ^/bbs$ https://bbs.westos.org  permanent;
    location / {
      root  /www1;      ##底下4行可以注释调
      index  index.html;
}
}

nginx  -s   reload   ##每次改完配置文件后,一定记得要加载服务
在真迹里面测试:curl  -I    www.westos.org/bbs##可以看见重定向到相应的位置https://bbs.westos.org

如果是www.westos.org/bbs/**可以重定向到http://bbs.westos.org/***
server{
        listen  80;
        server_name  www.westos.org westos.org ;
    rewrite  ^/bbs$ https://bbs.westos.org  permanent;
    rewrite  ^/bbs/(.*)$  https://bbs.westos.org/$1;
    location / {
      root  /www1;      ##底下4行可以注释调
      index  index.html;
}
}


nginx  -s  reload
在真迹里面测试:curl  -I    www.westos.org/bbs/index.html##可以看见重定向到相应的位置https://bbs.westos.org/index.html

如果访问bbs.westos.org的时候,重定向到www.westos.org/bbs里

cd  /www1
mkdir   bbs
ls
cd bbs
vim  index.html  (www.westos.org-bbs)
server{
        listen  80;
        server_name  www.westos.org westos.org bbs.westos.org;
    if  ($host = "bbs.westos.org") {
    rewrite ^/(.*)$ http://www.westos.org/bbs;
    }
    location / {
      root  /www1;      
      index  index.html;
}
}


nginx  -s  reload
在真机中测试,curl  -I  bbs.westos.org
重定向到http://www.westos.org/bbs
打开浏览器可以看见的更清晰
bbs.westos.org   ##可以看见www.westos.org-bbs   ##记得要把index.php注销

限定用户访问
将server里面的localtion  改为_
server {
    listen   80;
    server_name  _;
    return  500;
   location  / {
        root  html;
        index  index.html   index.htm;
   }


nginx  -s  reload
打开浏览器172.25.254.11 可以看见被拒绝了

不直接拒绝,进行重定向
server {
    listen   80;
    server_name  _;
    rewrite ^(.*)  http://www.westos.org;
   location  / {
        root  html;
        index  index.html   index.htm;
   }


nginx  -s  reload
打开浏览器172.25.254.11 可以看见被重定向了或者curl   -I  172.25.254.11

允许和拒绝用户
在虚拟主机中做
server{
        listen  80;
        server_name  www.westos.org    westos.org bbs.westos.org;    
if  ($host = "bbs.westos.org"){
 rewrite ^/(.*)$ http://www.westos.org/bbs;
}
 location / {
      root  /www1;
      index  index.html;
      allow  172.25.17.0/24;   ##允许172.25.17网端的访问,其他的拒绝;
      deny  all;
}
}


nginx  -s  reload;
在不同的网端访问,可以看见一个是200  ok  ,一个是403  拒绝的;


curl   -I   www.westos.org
记得要给虚拟机和真机加解析,不同网端的也要加解析


照片之类的拒绝访问
cd   /www1
mkdir  images
cd images


里面放一张照片   l
在虚拟访问里面加
location  ~ ^/images/.*\.(jpg|gif)${
     deny  all;     模版在最后
}


nginx  -s reload
测试在真机 curl  -I  www.westos.org/images/vim.jpg  ##发现是403被拒绝了

下载之类的访问
mkdir  /www1/download
cd  /www1/download
cp  /www1/images/vim.jpg  .


在虚拟访问里面加
location  /download/ {
   root  /www1;
   limit_conn addr  1;  ##并发量为1
    limit_req   zone=one  burst=5;  #一次性执行5个,每个执行一秒;
    limit_rate  50k; ##下载的速度为50k;
}


将下面这句话写在#gzip  on;下边
limit_conn_zone  $binary_remote_addr  zone=addr:10m;
limit_req_zone  $binary_remote_addr   zone=one:10m  rate=1r/s;


nginx  -s  reload
在真机压力测试
ab  -c  1  -n  10  http://www.westos.org/download/vim.jpg
-c  代表并发量  -n  代表执行任务的次数


在虚拟主机中查看日志
cat /usr/local/lnmp/nginx/logs/access.log   ##看日志有没有报错


ab  -c  5  -n  10  http://www.westos.org/download/vim.jpg
在虚拟主机中查看日志
cat /usr/local/nginx/logs/access.log   ##看日志有没有报错,发现只有一个访问到了,其余4个没有访问到,因为我们设置的并发量为1

我们给访问的加时间限制
在给访问照片的加时间限制,去掉拒绝所有;
location ~ ^/images/.*\.(jpg|gif)$ {
    expires  30d;
    root  /www1;
}


nginx  -s  reload
测试在真机 curl  -I  www.westos.org/images/vim.jpg  ##可以看见时间限制


使他支持中文,发送文件的限制
在虚拟主机中做
在server俩面加   charset   utf-8;
server{
    listen 80;
     server_name   www.westos.org  westos.org  bbs.westos.org;
    charset  utf-8;
nginx  -s  reload
我门打开  sendfile  on;
tcp_nopush   on;
tcp_nodelay  on;  ##这是发送文件的时候没有延迟的设定


nginx  -s  reload
vim /www1/index.html  里面加入中文,方便测试
在真机测试  www.westos.org ##可以看见有中文,如果出现乱码,可能你没有加载服务,加载完成之后,记得清理浏览器缓存,

ctrl+shift+delete  键去清除缓存

盗链的应用
另开一台虚拟机
yum  install  -y httpd
/etc/init.d/httpd  start
cd  /var/www/html/
ls
vim  index.html
<html>
<body>
<br>图片</br>
<img  src="http://www.westos.org/images/vim.jpg">
</body>
</html>


在真机中解析中加入解析
虚拟机的位置加入   daolian.westos.org


测试在真机中
daolian.westos.org  ##可以看见图片

##防盗链的设置
在图片的位置加入防盗链的设置
location ~ ^/images/.*\.(jpg|gif)$ {
    expires  30d;
    root  /www1;
     valid_referers   none  blocked   www.westos.org;
    if  ($invalid_referer) {
     return  403;
  }
}


nginx  -s  reload
测试在真机中
daolian.westos.org  ##可以看见照片裂开了,不可看


盗链的链接
在图片的位置加入防盗链的设置
location ~ ^/images/.*\.(jpg|gif)$ {
    expires  30d;
    root  /www1;
     valid_referers   none  blocked   www.westos.org;
    if  ($invalid_referer) {
    # return  403;
    rewrite   ^/(.*)$  http://bbs.westos.org/daolian.jpg;
  }
}


nginx  -s  reload
把添加的域名删了关于bbs的
server_name   www.westos.org   westos.org  ;
同时取消注释
使bbs的域名显示出来
server {
    listen  80;
    server_name  bbs.westos.org;
    location / {
      root  /www2;
    index  index.html;
}
}
同时下载盗链图片
把图片放在/www2里面
cd /www2
ls 有daolian.jpg


 

猜你喜欢

转载自blog.csdn.net/weixin_42709236/article/details/83090589