• 第八模塊-企業工具


    把文件中不必要的語句 過濾、刪除

    sed -i '/#/d' nginx.conf
    sed -i '/^$/d' nginx.conf

      

    可以立即查看html文件里的內容

    編譯之前檢查該配置文件是否有報錯

    ../sbin/nginx -g nginx.conf
    

      

    查找哪个命令对应是安装哪个包:

    yum  search 命令
    

      

    echo aaaa > a/index.html

    echo bbbb > b/index.html

    表示寫入'aaaa' 進 a文件目錄下的index.html文件

    通過命令可以查看a目錄下的網頁輸出:

    elinks http:127.0.0.1/a --dump

    查看對應端口是否有應用在使用

    lsof -i:端口

    例如:lsof -i :80

    重新读取数据,相当于重启
    killall -s HUP nginx

    ①用戶登錄認證:

    先安裝兩個包httpd-tools  和 openssl

    yum -y install httpd-tools

    rpm -qf 'which htpasswd'  (該命令是查看哪個包提供了"htpasswd" 這個命令) 

    在根目錄創建一個文件夾nginx:

    mkdir /etc/nginx

    再創建一個文件

    vim /etc/nginx/htpasswd

    在htpasswd 里寫入賬號和密碼,如賬號名:密碼   ---》  tang:123

    但是這樣是不行的,因為密碼是明文沒有加密,所以需要使用命令講密碼"123" 加密后再寫入去

    命令:htpasswd -m /etc/nginx/htpasswd tang_new      

    其中tang_new  為你的賬號名,之後連續輸入兩次密碼后,在htpasswd文件里就會產生一個新的賬號與其對應加密的密碼,這時候再重啟nginx后再使用新的賬號和密碼登錄即可

    但是在nginx.conf 配置文件里,需要添加對應的文件驗證配置:

    location /c {
    auth_basic "登陆验证";
    auth_basic_user_file /etc/nginx/htpasswd;
    }
    

      

    ②自定義log

    在配置文件nginx.conf 里有這一段代碼

    log_format main '..........................';

    其中,log_format 固定,main 為這個日誌的名稱,後面單引號裡面填寫的是你要再這個log里你想輸出的內容

    系統默認為:access_log logs/access.log main;

    我們一般將日誌輸出為json格式,方便使用

    log_format main_json '{"@timestamp":"$time_local",'
    '"client_ip": "$remote_addr",'
    '"request": "$request",'
    '"status": "$status",'
    '"bytes": "$body_bytes_sent",'
    '"x_forwarded": "$http_x_forwarded_for",'
    '"referer": "$http_referer"'
    '}';
    access_log logs/access_json.log main_json;
    

      

    ③防盜鏈

    放置用戶通過第三方訪問,如A(用戶) 是直接訪問了B,但是如果百度盜取了B的數據,如圖片,A可以直接通過訪問百度來訪問該張圖片而不需要訪問B,這樣B的訪問量將會下降

    location /images/ {
    alias /data/images/;
    valid_referers none blocked *.ayitula.com;    #這些是一些匹配數據
    if ($invalid_referer) {              #只要滿足上面的其中一個,就會返回403
    rewrite ^/ http://www.ayitula.com/daolian.gif;
    #return 403;
    } }
    

      

    虛擬主機:就是把一台物理服务器划分成多个“虚拟” 的服务器,每一个虚拟主机都可以有独
    立的域名和独立的目录

    ①基於IP地址的設置

    1.建立DocumentRoot

    同時發佈兩個網站用:

    DocumentRoot  /usr/local/nginx/html/web1

    DocumentRoot  /usr/local/nginx/html/web2

    2.設置有兩個IP地址

    ifconfig eth0:1 172.168.1.1/24 up
    

    3.設置兩個index.html 索引頁

    最後需要在nginx.conf 配置文件中設置有兩個server

    server {
    listen 192.168.10.42:80;
    location / {
    root html/web1;
    index index.html index.htm index.php;
    }
    }server {
    listen 192.168.10.52:80;
    location / {
    root html/web2;
    index index.html index.htm;
    }
    }
    

      

    ②基於端口不通:

    需將配置文件中的listen改為不同的端口號即可

    server {
    listen 80;
    #server_name www.abc.com;
    location / {
    root html/web1;
    index index.html index.htm index.php;
    }
    }
    server {
    listen 8080;
    #server_name www.abc.com;
    location / {
    root html/web2;
    index index.html index.htm;
    }
    }
    

      

    ③基於域名的虛擬主機

    server {
    listen 80;
    server_name www.abc.com;
    location / {
    root html/web1;
    index index.html index.htm index.php;
    }
    }
    server {
    listen 80;
    server_name www.cbd.com;
    location / {
    root html/web2;
    index index.html index.htm;
    }
    }
    

      

    反向代理

    代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理
    服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数
    据,存放在代理服务器的硬盘中,再发送给客户机。

    基本设置:

    client mac http://192.168.10.42       -----》本机
    反代 Nginx 42                                 ------》代理机,端口为42
    业务机器 book.ayitula.com http://118.190.209.153:4000/         ------》业务机器


    限速:

    限流(rate limiting)是NGINX众多特性中最有用的,也是经常容易被误解和错误
    配置的,特性之一。该特性可以限制某个用户在一个给定时间段内能够产生的HTTP
    请求数。请求可以简单到就是一个对于主页的GET请求或者一个登陆表格的POST
    请求。

    在配置文件nginx.conf 里的http下 写入

    limit_req_zone $binary_remote_addr zone=baism:10m rate=1r/s;
    

    第一个参数:$binary_remote_addr 表示通过remote_addr这个标识来做限制,
    “binary_” 的目的是缩写内存占用量,是限制同一客户端ip地址。
    第二个参数:zone=baism:10m表示生成一个大小为10M,名字为baism的内存区域,
    用来存储访问的频次信息。
    第三个参数:rate=1r/s表示允许相同标识的客户端的访问频次,这里限制的是每秒
    1次,还可以有比如30r/m的。

    ①访问次数限制

     更新server代码:

    server {
    location /abc {limit_req zone=baism burst=5 nodelay;
    }
    

     PS:记住在http上要加上 上面说的哪个语句,创建一个baism 的空间

    ②限制下载速度

    更新http代码

    limit_conn_zone $binary_remote_addr zone=addr:10m; 
    

     更新server代码   

    limit_conn addr 1;    #限制下载人数为1个连接数
    limit_rate 100k; #限制下载速率为100k

      

    URL重写:

    即用户访问一个url时,对方会返回另外一个url,让用户自动跳转至另外一个url去访问

    URL 模块语法

    1) set 设置变量

    2) if 负责语句中的判断

    3) return 返回返回值或URL

    4) break 终止后续的rewrite规则

    5) rewrite 重定向URL

    实现:在location里面添加语句

    set $name baism;
    rewrite ^(.*)$ http://www.ayitula.com/$name;
    

      如上,当访问根目录时,会跳转至

    http://www.ayitula.com/$name

    if 判断指令:

    location / {
    root html;
    index index.html index.htm;
    if ($http_user_agent ~* 'Chrome') {   #判断如果是用google浏览器访问的,就会返回403
    break;
    return 403;
    #return http://www.jd.com;
    }
    }
    

      

    rewrite:

    last #本条规则匹配完成后, 继续向下匹配新的location URI规则
    break #本条规则匹配完成即终⽌, 不再匹配后⾯的任何规则
    redirect #返回302临时重定向, 浏览器地址会显示跳转后的URL地址
    permanent #返回301永久重定向, 浏览器地址栏会显示跳转后的URL地址

    location / {
    rewrite ^/$ http://www.jd.com permanent ;     301永久重定向
    }
    

      重定向其实对于用户是看不见的,主要是对于搜索引擎的

    last 的作用是匹配玩后,区别于break立即结束,而是会继续向下匹配,匹配下一个server块,重新location匹配,匹配不到10次后会500错误

    if ($http_user_agent ~* 'chrome'){
    rewrite ^(.*)$ /chrome/$1 last;     #last 会重新继续匹配,按照新的格式http://IP地址/chrome/$url 进行匹配,这样就会走到下面的这个location里面,当我们输入http://IP地址/b  时会自动跳转为http://IP地址/chrome/b  若此时有这个目录则会显示内容
    }
    location /chrome {
    root html ;
    index index.html;
    }
    }
    

      

    優化:

    01 优化思路
    本节内容
    02 ⼯作进程优化
    03 ⻓连接
    04 压缩优化
    05 客户端缓存优化

  • 相关阅读:
    私有属性的另类访问方式
    获取类所有属性和查看帮助文档
    类的私有属性及私方法(请注意属性的传值方式)
    类的私有属性及私方法
    类的定义
    怎么区分类变量和实例变量?
    面向对象编程案例04--访问控制
    面向对象编程案例03---继承之高级部分
    python 面向对象编程案例01
    静态方法
  • 原文地址:https://www.cnblogs.com/tyh-tesla/p/11029150.html
Copyright © 2020-2023  润新知