Evernote Export

Nginx默认网站
当Nginx配置文件中有且仅有一个Server的时候,该Server就被Nginx认为是默认网站,所有发给Nginx服务器80端口的数据都会默认给server
#$开头是变量
#定义Nginx运行的用户和用户组
user work work;
#nginx进程数,建议设置为等于CPU总核心数
worker_processes  auto;
#指当一个nginx进程打开的最多文件描述符数目
worker_rlimit_nofile 204800;
#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log  /opt/log/nginx/error.log error;
#工作模式及连接数上限
events {
        #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];
        #epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型
        use epoll;
        #单个后台worker process进程的最大并发链接数
        worker_connections  102400;
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
        #文件扩展名与文件类型映射表
        include       mime.types;
        #默认文件类型
        default_type  application/octet-stream;
        #默认编码
        charset utf-8;
        #设定日志格式
        #log_format  main  '$idXXXX\t$remote_addr\t$remote_user\t$time_local\t$http_host\t$request\t'
        #             '$status\t$body_bytes_sent\t$http_referer\t'
        #             '$http_user_agent\t$http_x_forwarded_for\t$request_time\t$upstream_response_time\t$userid';
        log_format main "$cookie_idXXXX\t$remote_addr\t$remote_user\t[$time_local]\t$request_method\t$host\t$request_uri\t"
                        "$request_time\t$status\t$body_bytes_sent\t'$http_referer'\t"
                        "'$http_user_agent'\t'$http_x_forwarded_for'\t$upstream_addr\t$upstream_response_time\t$upstream_status\t";
                 
    #不可见字符分隔日志格式
    #include other_log_format.conf;
    #实时日志收集json格式日志
    #include json_log_format.conf;
        #日志流格式
        log_format stream_log "$cookie_idXXXX\t$remote_addr\t$remote_user\t[$time_local]\t$request_method\t$host\t$request_uri\t"
                      "$request_time\t$status\t$body_bytes_sent\t'$http_referer'\t"
                      "'$http_user_agent'\t'$http_x_forwarded_for'\t$upstream_addr\t$upstream_response_time\t3";
        
        #成功日志
        access_log  /opt/log/nginx/access.log main;
        #access_log syslog:local6:notice:log1.op.XXXXdns.org:514:nginx-main-log main;
        
        #指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
        #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
        sendfile        on;
        #长连接超时时间,单位是秒
        keepalive_timeout  60;
        #服务器名称哈希表的最大值(默认512)[hash%size]
        server_names_hash_max_size 1024;
        #服务器名字的hash表大小
        server_names_hash_bucket_size 256;
        #客户请求头缓冲大小
        client_header_buffer_size 4k;
        #如果header过大,它会使用large_client_header_buffers来读取
        large_client_header_buffers 4 256k;
        client_header_timeout  1m;
        client_body_timeout    1m;
        send_timeout           1m;
        #防止网络阻塞
        tcp_nopush     on;
        tcp_nodelay    on;
        #允许客户端请求的最大单文件字节数
        client_max_body_size 50m;
        
        #缓冲区代理缓冲用户端请求的最大字节数
        client_body_buffer_size 50m;
        
        #nginx跟后端服务器连接超时时间(代理连接超时)
        proxy_connect_timeout 5;
        
        #后端服务器数据回传时间(代理发送超时)
        proxy_send_timeout 15;
        
        #连接成功后,后端服务器响应时间(代理接收超时)
        proxy_read_timeout 15;
        
        #设置代理服务器(nginx)保存用户头信息的缓冲区大小
        proxy_buffer_size 4k;
        
        #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
        proxy_buffers 8 32k;
        
        #高负荷下缓冲大小(proxy_buffers*2)
        proxy_busy_buffers_size 64k;
        
        #设定缓存文件夹大小,大于这个值,将从upstream服务器传
        proxy_temp_file_write_size 64k;
        proxy_intercept_errors  on;
        #客户端放弃请求,nginx也放弃对后端的请求
        #proxy_ignore_client_abort on;
    #代理缓存头信息最大长度[设置头部哈希表的最大值,不能小于你后端服务器设置的头部总数]
    proxy_headers_hash_max_size 512;
    #设置头部哈希表大小(默认64)[这将限制头部字段名称的长度大小,如果你使用超过64个字符的头部名可以加大这个值。]
    proxy_headers_hash_bucket_size 256;
    #变量哈希表的最大值(默认值)
    variables_hash_max_size 512;
    #为变量哈希表制定关键字栏的大小(默认64)
    variables_hash_bucket_size 128;
        
        #开启gzip压缩输出
        gzip on;
        #最小压缩文件大小
        gzip_min_length 1k;
        #压缩缓冲区
        gzip_buffers     4 16k;
        #压缩等级
        gzip_comp_level 9;
        #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
        gzip_http_version 1.0;
        #压缩类型,默认就已经包含textml
        gzip_types text/plain application/x-javascript application/json application/javascript text/css application/xml text/javascript image/gif image/png;
        gzip_vary on;
        #map模块使用
        map_hash_max_size 102400;
        map_hash_bucket_size  256;
        #Tengine Config
        #concat on;
        #trim on;
        #trim_css off;
        #trim_js off;
        server_tokens off;
        #footer "<!-- $remote_addr $server_addr $upstream_addr -->";
        #rewrite_log on;
        fastcgi_intercept_errors on;
    #include other config file
        include ../conf.d/*.conf;
    #包含一些特殊站点的配置文件,此目录下文件暂时不包含在git自动管理过程中
    include ../special/*.conf;
    #屏蔽不加主机域名的默认请求
    #server {
        #   listen *:80 default;
        #   server_name _ "";
        #   return 444;
    #}
    
    #ceshi by dongange 2016-01-07
    #Nginx状态监测模块配置
    req_status_zone server "$server_name,$server_addr:$server_port" 10M;
    req_status server;
    server {
        listen 127.0.0.1:80;
        server_name 127.0.0.1;
        access_log /opt/log/nginx/nginx_status/status_access.log main;
            location /status {
                req_status_show;
                access_log /opt/log/nginx/nginx_status/status_access.log main;
                allow 127.0.0.1;
                deny all;
                }
            location /stub_status {
                stub_status on;
                access_log /opt/log/nginx/nginx_status_stub/status_stub_access.log main;
                allow 127.0.0.1;
                deny all;
            }
            location /check_status {
                check_status;
                access_log /opt/log/nginx/nginx_status_check/status_access_check.log main;
                allow 127.0.0.1;
                deny all;
            }
    }
}
 
log_format 变量
     remote_addr 记录访问网站的客户端地址
     remote_user 远程客户端用户名
     time_local  记录时间与时区
     request     用户的http请求起始行信息
     status      http状态码,记录请求返回的状态码,如201 301 401等
     body_bytes_sent 服务器发送给客户端的响应body字节数
     http_referer 记录此次请求是从哪个连接访问过来的,可以根据参数进行防盗链设置
     http_user_agent 记录客户端访问信息,例如:手机端、浏览器等
     http_x_forwarded_for 当前端有代理服务器时,设置web节点记录客户端的地址配置,此参数生效前服务器也要进行相应的x_forwarded_for配置
 
Nginx目录控制访问
Nginx目录验证
Nginx日志管理
log format 调用日志,综合软件可以实时分析日志展示
Nginx防盗链
防盗链的原理就是针对于请求头中的referer,不管请求是直接访问还是从第三方请求中跳转过来,服务器都会去检查请求中是否有referer,跳转过来的字段检测是否是服务器的同意的字段,防盗链是部署情况下必须做的一件事。

虚拟主机介绍
一个web服务器软件默认情况下只能发布一个web,因为一个web分享出去需要三个条件(IP、Port、Domain name)
一个web服务器软件如何发布多个web呢?
虚拟主机:就是把一个服务器划分为多个虚拟服务器,每一个虚拟主机都有可以独立的域名和独立的目录
基于IP的虚拟主机
#第一个虚拟主机
server {
        listen       80;
        server_name  localhost;
 
        location / {
            root   html;
            index  index.html index.htm;
 
#第二个虚拟主机                      
server {
        listen       192.168.1.220:80;
        server_name  localhost;
 
        location / {
            root   /website/baseip;
            index  index.html index.htm;
        }
    }
 
基于端口的虚拟主机
#第一个虚拟主机
server {
        listen       80;
        server_name  localhost;
 
        location / {
            root   html;
            index  index.html index.htm;
        }
 
#第二个虚拟主机        
server {       
        listen       8080;
        server_name  localhost;
 
        location / {
            root   /website/port;
            index  index.html index.htm;
        }
    }
 
基于域名的虚拟主机
#第一个虚拟主机
server {
        listen       80;
        server_name mail.ycdata.net;
 
        location / {
            root   html;
            index  index.html index.htm;
        }
 
#第二个虚拟主机        
server {
        listen       80;
        server_name  bbs.ycdata.net;
 
        location / {
            root   /website/baseport;
            index  index.html index.htm;
        }
    }
 
 
Nginx反向代理
反向代理介绍
在内网里设置代理服务器,在访问的时候就直接将网址的内容设置在代理服务器上,这是正向代理,代理对象是用户
代理的对象是服务器就是反向代理
代理服务器,客户机在发送请求的时候,不会直接发送给目的主机,而是先发给代理服务器,代理服务器接收客户机的请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发给客户机。
 
应用场景
堡垒机场景-安全配置只接受来自堡垒机的请求访问,其他都拒绝
内网服务器发布场景
缓存场景
反向代理原理
1.客户端通过浏览器发起请求-代理服务器
2.代理服务器-接收请求
3.代理服务器-发起请求-业务服务器
4.业务服务器-接收请求
5.业务服务器-处理请求
6.业务服务器-响应请求-代理服务器
7.代理服务器-响应请求-客户端
8.客户端通过浏览器渲染并展示给用户
反向代理实现
Nginx限速
1.限速介绍
限速该特性可以限制某个用户在一个给定的时间段内能够产生的HTTP请求数。请求可以简单到就是一个对于主页的GET请求或者一个登陆表格的POST请求。
限速也可以用于安全目的上,比如密码暴力破解攻击。通过限制进来的请求速率,并且(结合日志)标记出目标URLs来帮助防范DDos攻击。一般来说,限流是用在保护上游应用服务器不被在同一时刻的大量用户请求湮没。
2.应用场景
DDos攻击防范
下载限速
3.限速原理
算法原理:
水(请求)从上方倒出,从水桶下方流出(被处理)
来不及流出的水存在水桶中(缓存),以固定的速率流出
水桶满水后溢出(丢弃)
这个算法的核心是:缓存请求、匀速处理,多余的请求被丢弃
4.限速实现
url重写
1.URL重写介绍
rewrite模块
Rewrite模块功能是Nginx服务器提供的一个重要的功能,几乎是所有的web产品的必备技能,用于实现URL重写。URL重写是非常实用的功能,比如在我们改变网络结构以后,不需要客户端修改原来的书签,也不需要其他网站修改我们对网站的友情链接,还可以在一定程度上提高网站的安全性,能够让网站显得更专业。
Nginx服务器rewrite功能的实现是依赖于PCRE(Perl Compatiable Regular Expression.Perl兼容的正则表达式)
所以在Nginx编译安装之前,需要安装PCRE库
2.应用场景
域名变更(京东)
用户跳转(从某一个连接跳转到另一个连接)
伪静态场景(便于CDN缓存动态页面数据)
URL语法
1.set 设置变量
2.if 负责语句中的判断
3.return 返回返回值或URL
4.break 终止后续的rewrite规则
5.rewrite 重定向URL
注意:重定向就是将网页自动转向重定向
301永久性重定向:新网址完全继承旧网址,旧网址的排名完全清零
301重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301做转址
302临时性重定向:对旧网址没有影响,但是新网址不会有排名
搜索引擎会抓取新的内容而保留旧的地址
3.URL重写原理
4.URL重写实现
 
优化
优化的目的
标准情况下,软件默认的参数都是对安装软件的硬件标准来设置的,目前我们服务器的硬件资源远远大于要求的标准,所以为了让服务器性能更加出众,充分利用服务器的硬件资源,我们一般都需要优化APP的并发数来提升服务器的性能。
1.优化思路
2.工作进程优化
 主要是为了大并发的实现
3.长连接
主要是为了减少三次握手和四次挥手的资源访问
4.压缩优化
减少带宽的成本,让用户尽快拿到数据
5.客户端缓存优化
客户端从本地拿取数据
 
 
 
 
 
 
 
 
 
 
 
 

路飞学城Python-Day181的更多相关文章

  1. 路飞学城—Python爬虫实战密训班 第三章

    路飞学城—Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫: - 定义调度器 - ...

  2. 路飞学城—Python爬虫实战密训班 第二章

    路飞学城—Python爬虫实战密训班 第二章 一.Selenium基础 Selenium是一个第三方模块,可以完全模拟用户在浏览器上操作(相当于在浏览器上点点点). 1.安装 - pip instal ...

  3. 路飞学城Python爬虫课第一章笔记

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 之前看阮一峰的博客文章,介绍到路飞学城爬虫课程限免,看了眼内容还不错,就兴冲冲报了名,99块钱满足以下条件会返还并送书送视频. 缴 ...

  4. 路飞学城-Python开发集训-第3章

    学习心得: 通过这一章的作业,使我对正则表达式的使用直接提升了一个level,虽然作业完成的不怎么样,重复代码有点多,但是收获还是非常大的,有点找到写代码的感觉了,遗憾的是,这次作业交过,这次集训就结 ...

  5. 路飞学城-Python开发集训-第1章

    学习体会: 在参加这次集训之前我自己学过一段时间的Python,看过老男孩的免费视频,自我感觉还行,老师写的代码基本上都能看懂,但是实际呢?....今天是集训第一次交作业的时间,突然发现看似简单升级需 ...

  6. 路飞学城-Python开发集训-第4章

    学习心得: 学习笔记: 在python中一个py文件就是一个模块 模块好处: 1.提高可维护性 2.可重用 3.避免函数名和变量名冲突 模块分为三种: 1.内置标准模块(标准库),查看所有自带和第三方 ...

  7. 路飞学城-Python开发集训-第2章

    学习心得: 这章对编码的讲解超级赞,现在对于编码终于有一点认知了,但还没有大彻大悟,还需要更加细心的琢磨一下Alex博客和视频,以前真的是被编码折磨死了,因为编码的问题而浪费的时间很多很多,现在终于感 ...

  8. 路飞学城-Python开发-第二章

    ''' 数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家' ...

  9. 路飞学城-Python开发-第三章

    # 数据结构: # goods = [ # {"name": "电脑", "price": 1999}, # {"name&quo ...

  10. 路飞学城-Python开发-第一章

    # 基础需求: # 让用户输入用户名密码 # 认证成功后显示欢迎信息 # 输错三次后退出程序 username = 'pandaboy' password = ' def Login(username ...

随机推荐

  1. Solr数据不同步

    Solr配置了集群,本地有253和254,2个独立的Solr服务.  同一个页面的图片,刷新2次,图片地址不一样,最后查明,后台数据源Solr1和Solr2的数据不一致.    第1步推测:本地缓存, ...

  2. Spring Cloud-Bus(十二)

    说明 用于分布式上所有微服务都连接到消息总线上面.进行统一的通知 Config动态刷新 configClient configClient通过/actuator/bus-refresh端点通知消息总线 ...

  3. Spring Boot-定义拦截器(七)

    在web项目 我们常常使用拦截器做权限验证和登陆验证 1.创建一个拦截器实现类 标注@Componet @Component public class LoginInterceputer implem ...

  4. c#--早绑定晚绑定

    原文地址 早绑定early binding: 在编译的时候就已经却确定了将来程序运行基类或者派生类的哪个方法. 在编译代码的时候根据引用类型就决定了运行该引用类型中定义的方法.即基类方法. 这种方式运 ...

  5. Sublime Text 3常用插件—Emmet

    原文链接:http://www.cnblogs.com/easy-blue/p/6617852.html 摘要: 安装请看上一篇Sublime Text—安装,和sublime自带快捷键一起用,写ht ...

  6. [Drupal]主题教程

    drupal6和drupal7的主题开发有很大不同,本指南包含了这些不同 drupal7的默认主题是Bartik,6的是Garland drupal的主题系统是如何工作的 这部分内容主要讲述的是dru ...

  7. Android学习笔记(17):文本框TextView类

    TextView继承自View.用于显示文本.它有很多的子类,掌握其属性是非常重要的. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5 ...

  8. MX2怎样利用Fiddler进行网络数据抓包

    首先须要保证PC与手机在同一局域网内或有独立公网IP, 下面以在同一局域网为例(保证手机能訪问到这台PC机器): 1. PC端配置 1). 安装Fiddler 2). 开启Fiddler下面功能:   ...

  9. win7浏览器出现无法连接到代理服务器错误解决办法

    今天早上打开电脑浏览器显示无法连接到代理服务器 解决办法: 1.Google浏览器 2.打开设置->高级设置->打开代理服务器->局域网设置,把对勾去掉 3.点击确定,关闭浏览器重新 ...

  10. PowerShell攻防进阶篇:nishang工具用法详解

    PowerShell攻防进阶篇:nishang工具用法详解 导语:nishang,PowerShell下并肩Empire,Powersploit的神器. 开始之前,先放出个下载地址! 下载地址:htt ...