> 文档中心 > (原)Nginx - (一):基础理论知识

(原)Nginx - (一):基础理论知识

本文是好久之前参考网上大佬教程,边学习边参考边做笔记,整理的内容,分享下大家学习~

如果这位大佬看见,请评论留下您的名字和联系方式,我这里修改为【转载

Nginx小白 从入门到放弃  - (一):基础理论知识

Nginx小白 从入门到放弃  - (二):基础使用

Nginx小白 从入门到放弃  - (三):项目应用 - 基础配置

 

一、.基础理论知识

1.1 nginx架构理解

http://tengine.taobao.org/book/chapter_09.html

二、入门教程

2.1 首先理解nginx基本概念是什么

      Nginx是一个高性能的http和反向代理服务器。Nginx主要特点为占用内存小,处理并发能力强悍,在国内被广泛采用。

2.2 工作流程

2.2.1正向代理

含义 → 正向代理(Forward Proxy)通常都被简称为代理,就是在用户无法正常访问外部资源,比方说受到GFW的影响无法访问twitter的时候,我们可以通过代理的方式,让用户绕过防火墙,从而连接到目标网络或者服务。

2.2.2反向代理

含义 →  反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

流程图:

                       Forward Proxy                                                                         Reverse Proxy

                       

2.3 Nginx模块

        

   

   

如果找到了这个虚拟主机的配置,那么通常情况下,这个 HTTP Request 将会经过以下几个阶段的处理(phase handlers):

完整处理流程:

      

Nginx服务器nginx.conf的配置文件

# 运行用户user www-data;    # 启动进程,通常设置成和cpu的数量相等worker_processes  1;# 全局错误日志及PID文件error_log  /var/log/nginx/error.log;pid /var/run/nginx.pid;# 工作模式及连接数上限events {    use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能    worker_connections 1024; #单个后台worker process进程的最大并发链接数    # multi_accept on; }#设定http服务器,利用它的反向代理功能提供负载均衡支持http {    #设定mime类型,类型由mime.type文件定义    include/etc/nginx/mime.types;    default_type  application/octet-stream;    #设定日志格式    access_log    /var/log/nginx/access.log;    #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,    #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.    sendfile on;    #将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞    tcp_nopush      on;    tcp_nodelay     on;    #连接超时时间    keepalive_timeout  65; #开启gzip压缩    gzip  on;    gzip_disable "MSIE [1-6]\.(?!.*SV1)";    #设定请求缓冲    client_header_buffer_size    1k;    large_client_header_buffers  4 4k;    include /etc/nginx/conf.d/*.conf;    include /etc/nginx/sites-enabled/*;    #设定负载均衡的服务器列表    upstream mysvr { #weigth参数表示权值,权值越高被分配到的几率越大 #本机上的Squid开启3128端口 server 192.168.8.1:3128 weight=5; server 192.168.8.2:80  weight=1; server 192.168.8.3:80  weight=6;    }    server { #侦听80端口 listen80; #定义使用www.xx.com访问 server_name  www.xx.com; #设定本虚拟主机的访问日志 access_log  logs/www.xx.com.access.log  main; #默认请求 location / {     root   /root;      #定义服务器的默认网站根目录位置     index index.php index.html index.htm;   #定义首页索引文件的名称     fastcgi_pass  www.xx.com;     fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;      include /etc/nginx/fastcgi_params; } # 定义错误提示页面 error_page   500 502 503 504 /50x.html;location = /50x.html {     root   /root; } #静态文件,nginx自己处理 location ~ ^/(images|javascript|js|css|flash|media|static)/ {     root /var/www/virtual/htdocs;     #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。     expires 30d; } #PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置. location ~ \.php$ {     root /root;     fastcgi_pass 127.0.0.1:9000;     fastcgi_index index.php;     fastcgi_param SCRIPT_FILENAME /home/www/www$fastcgi_script_name;     include fastcgi_params; } #设定查看Nginx状态的地址 location /NginxStatus {     stub_status     on;     access_logon;     auth_basic"NginxStatus";     auth_basic_user_file  conf/htpasswd; } #禁止访问 .htxxx 文件 location ~ /\.ht {     deny all; }  }    #第一个虚拟服务器    server { #侦听192.168.8.x的80端口 listen80; server_name  192.168.8.x; #对aspx后缀的进行负载均衡请求 location ~ .*\.aspx$ {     root   /root;#定义服务器的默认网站根目录位置     index index.php index.html index.htm;#定义首页索引文件的名称     proxy_pass  http://mysvr;#请求转向mysvr 定义的服务器列表     #以下是一些反向代理的配置可删除.     proxy_redirect off;     #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP     proxy_set_header Host $host;     proxy_set_header X-Real-IP $remote_addr;     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;     client_max_body_size 10m;    #允许客户端请求的最大单文件字节数     client_body_buffer_size 128k;  #缓冲区代理缓冲用户端请求的最大字节数,     proxy_connect_timeout 90;  #nginx跟后端服务器连接超时时间(代理连接超时)     proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)     proxy_read_timeout 90;  #连接成功后,后端服务器响应时间(代理接收超时)     proxy_buffer_size 4k;      #设置代理服务器(nginx)保存用户头信息的缓冲区大小     proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置     proxy_busy_buffers_size 64k;    #高负荷下缓冲大小(proxy_buffers*2)     proxy_temp_file_write_size 64k;  #设定缓存文件夹大小,大于这个值,将从upstream服务器传 }    }}

以上文章感谢作者:

https://www.jianshu.com/p/6215e5d24553

https://www.jianshu.com/p/bed000e1830b

2.3 常用命令

nginx -s stop# 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。nginx -s quit#平稳关闭Nginx,保存相关信息,有安排的结束web服务。nginx -s reload     #因改变了Nginx相关配置,需要重新加载配置而重载。nginx -s reopen     #重新打开日志文件。nginx -c filename   #为 Nginx 指定一个配置文件,来代替缺省的。nginx -t     #不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。nginx -v     #显示 nginx 的版本。nginx -V     #显示 nginx 的版本,编译器版本和配置参数。

2.4 配置实战

主要有:http反向代理配置、负载均衡配置、网站有多个webapp的配置、https反向代理配置、静态站点配置、跨域解决方案

以上文章感谢作者:

https://www.cnblogs.com/qdhxhz/p/8910174.html

麦克风网