浅谈Nginx的理解

Nginx简介

  Nginx(engine x)是一个高性能的Web服务器和反向代理服务器,也可以作为邮件代理服务器。Nginx 特点是占有内存少,并发处理能力强,以高性能、低系统资源消耗而闻名,Nginx官方测试为5万并发请求。

正向代理和反向代理的概念

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

  正向代理 类似一个跳板机,代理访问外部资源。比如:我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器,它能访问那个我不能访问的网站,于是我先连上代理       服务器,告诉它我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。

正向代理和反向代理举例

  正向代理

  比如你现在缺钱,想找马云爸爸去借钱,可想而知人家可能鸟都不鸟你,到最后碰一鼻子灰借不到钱。不过你认识你家隔壁老王,而老王认识马云同志,而且关系还很好。这时候你托老王去找马云借钱,当然这事最后成了,你从马云那里借到了500万!这时候马云并不知道钱是你借的,只知道这钱是老王借的。最后由老王把钱转交给你。在这里,老王就充当了一个重要的角色:代理。此时的代理,就是我们常说的正向代理。代理客户端去请求服务器,隐藏了真实客户端,服务器并不知道真实的客户端是谁。正向代理应用最广泛的莫过于现在的某些“科学上网工具”,你访问不了谷歌、Facebook的时候,你可以在国外搭建一台代理服务器,代理你访问,代理服务器再把请求到的数据转交给你,你就可以看到内容了。

  反向代理

  比如你现在很无聊,想找人聊天,这时候你拨通了联通客服10010电话,联通的总机可能随机给你分配一个闲置的客服给你接通。这时候你如愿以偿的和客服聊了起来,问了问她目前有没有结婚、有没有对象、家住哪里、她的微信号、她的手机号。。。此时联通总机充当的角色就是反向代理,你只知道和客服接通并聊了起来,具体为什么会接通这个客服MM,怎么接通的,你并不知道。反向代理隐藏了真正的服务端,就像你每天使用百度的时候,只知道敲打www.baidu.com就可以打开百度搜索页面,但背后成千上万台百度服务器具体是哪一台为我们服务的,我们并不知道。我们只知道这个代理服务器,它会把我们的请求转发到真实为我们服务的那台服务器那里去。

  综上所述:正向代理的代理对象是客户端,反向代理的代理对象是服务端

  总结:软件层面一般常用Nginx来做反向代理服务器,它的性能非常好,用来做负载均衡

下面我们来搭建Nginx环境

  下载Nginx,免费开源的官方网站:http://nginx.org,Nginx有Window,Linux版本,我们在Linux下使用Nginx

  下载nginx-1.14.2.tar.gz的源代码文件:wget http://nginx.org/download/nginx-1.14.2.tar.gz我的习惯,将下载或者上传的安装文件放到/home/soft/目录下

  安装前的准备

    Nginx的安装需要确定Linux安装相关的几个库,否则配置和编译会出现错误, 具体的检查安装过程为:

    gcc编译器是否安装

          检查是否安装:yum list installed | grep gcc

          执行安装:yum install gcc -y

    openssl库是否安装

          检查是否安装:yum list installed | grep openssl

          执行安装:yum install openssl openssl-devel -y

    pcre库是否安装

          检查是否安装:yum list installed | grep pcre

          执行安装:yum install pcre pcre-devel -y

    zlib库是否安装

          检查是否安装:yum list installed | grep zlib

          执行安装:yum install zlib zlib-devel -y

    一次性安装,执行如下命令

      yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel -y

正式安装

  解压下载下来的nginx文件,执行命令:tar -zxvf nginx-1.14.2.tar.gz

  切换至解压后的nginx主目录,执行命令:cd nginx-1.14.2

  在nginx主目录nginx-1.14.2下执行命令:./configure --prefix=/usr/local/nginx (其中--prefix是指定nginx安装路径)  注意:等号左右不要有空格

  执行命令进行编译:make

  执行命令进行安装:make install

  安装成功后,可以切换到/usr/local/nginx目录下,查看内容

启动方式:

  普通启动:

    切换到nginx安装目录的sbin目录下,执行:./nginx

 

 

 

  

 

通过配置文件启动

    ./nginx -c /usr/local/nginx/conf/nginx.conf

    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

  其中-c是指定配置文件,而且配置文件路径必须指定绝对路径

 

 

 

 

 

        nginx 体系结构由 master 进程和其 worker 进程组成

       master 进程读取配置文件,并维护 worker 进程,而 worker 进程则对请求进行实际处理

       Nginx启动后,安装目录下会出现一些_tmp结尾的文件,这些是临时文件,不用管。

       在浏览器中输入http://本机IP:80/访问Nginx服务器,出现以下界面

关闭

优雅关闭Nginx

  找出nginx的进程号:ps -ef | grep nginx

    执行命令:kill -QUIT 主pid

 

 

 

 

注意:

  其中pid是主进程号的pid(master process),其他为子进程pid(worker process)

  这种关闭方式会处理完请求后再关闭,所以称之为优雅的关闭

快速关闭Nginx:

        找出nginx的进程号:ps -ef | grep nginx

        kill -TERM 主pid

注意:

  其中pid是主进程号的pid(master process),其他为子进程pid(worker process),这种关闭方式不管请求是否处理完成,直接关闭,比较暴力,称之为快速的关闭

 

 

重启Nginx:

        ./nginx -s reload

配置检查

  当修改Nginx配置文件后,可以使用Nginx命令进行配置文件语法检查,用于检查Nginx配置文件是否正确

  /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf –t

 

 

Linux上查看nginx版本:/usr/local/nginx/sbin/nginx -V

  -v (小写的v)显示 nginx 的版本

  -V (大写的V)显示 nginx 的版本、编译器版本和配置参数

 

 

 

 

 

Nginx配置文件说明及Nginx主要应用

Nginx的核心配置文件

 

 

 

 

 

 

 

 

 

 

 

Nginx的核心配置文件主要由event,http,sserver三个部分构成

nginx.conf配置解析

  1 #配置worker进程运行用户 nobody也是一个linux用户,一般用于启动程序,没有密码
  2 user  nobody;  
  3 #配置工作进程数目,根据硬件调整,通常等于CPU数量或者2倍于CPU数量
  4 worker_processes  1;  
  5 
  6 #配置全局错误日志及类型,[debug | info | notice | warn | error | crit],默认是error
  7 error_log  logs/error.log;  
  8 #error_log  logs/error.log  notice;
  9 #error_log  logs/error.log  info;
 10 
 11 pid        logs/nginx.pid;  #配置进程pid文件 
 12 
 13 
 14 ###====================================================
 15 
 16 
 17 #配置工作模式和连接数
 18 events {
 19     worker_connections  1024;  #配置每个worker进程连接数上限,nginx支持的总连接数就等于worker_processes * worker_connections
 20 }
 21 
 22 ###===================================================
 23 
 24 
 25 #配置http服务器,利用它的反向代理功能提供负载均衡支持
 26 http {
 27     #配置nginx支持哪些多媒体类型,可以在conf/mime.types查看支持哪些多媒体类型
 28     include       mime.types;  
 29     #默认文件类型 流类型,可以理解为支持任意类型
 30     default_type  application/octet-stream;  
 31     #配置日志格式 
 32     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
 33     #                  '$status $body_bytes_sent "$http_referer" '
 34     #                  '"$http_user_agent" "$http_x_forwarded_for"';
 35 
 36     #配置access.log日志及存放路径,并使用上面定义的main日志格式
 37     #access_log  logs/access.log  main;
 38 
 39     sendfile        on;  #开启高效文件传输模式
 40     #tcp_nopush     on;  #防止网络阻塞
 41 
 42     #keepalive_timeout  0;
 43     keepalive_timeout  65;  #长连接超时时间,单位是秒
 44 
 45     #gzip  on;  #开启gzip压缩输出
 46     
 47     ###-----------------------------------------------
 48     
 49 
 50     #配置虚拟主机
 51     server {
 52         listen       80;  #配置监听端口
 53         server_name  localhost;  #配置服务名
 54 
 55         #charset koi8-r;  #配置字符集
 56 
 57         #access_log  logs/host.access.log  main;  #配置本虚拟主机的访问日志
 58 
 59     #默认的匹配斜杠/的请求,当访问路径中有斜杠/,会被该location匹配到并进行处理
 60         location / {
 61         #root是配置服务器的默认网站根目录位置,默认为nginx安装主目录下的html目录
 62             root   html;  
 63         #配置首页文件的名称
 64             index  index.html index.htm;  
 65         }        
 66 
 67         #error_page  404              /404.html;  #配置404页面
 68         # redirect server error pages to the static page /50x.html
 69         #error_page   500 502 503 504  /50x.html;  #配置50x错误页面
 70         
 71     #精确匹配
 72     location = /50x.html {
 73             root   html;
 74         }
 75 
 76         #PHP 脚本请求全部转发到Apache处理
 77         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
 78         #
 79         #location ~ \.php$ {
 80         #    proxy_pass   http://127.0.0.1;
 81         #}
 82 
 83         #PHP 脚本请求全部转发到FastCGI处理
 84         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
 85         #
 86         #location ~ \.php$ {
 87         #    root           html;
 88         #    fastcgi_pass   127.0.0.1:9000;
 89         #    fastcgi_index  index.php;
 90         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
 91         #    include        fastcgi_params;
 92         #}
 93 
 94         #禁止访问 .htaccess 文件
 95         # deny access to .htaccess files, if Apache's document root
 96         # concurs with nginx's one
 97         #
 98         #location ~ /\.ht {
 99         #    deny  all;
100         #}
101     }
102 
103     
104     #配置另一个虚拟主机
105     # another virtual host using mix of IP-, name-, and port-based configuration
106     #
107     #server {
108     #    listen       8000;
109     #    listen       somename:8080;
110     #    server_name  somename  alias  another.alias;
111 
112     #    location / {
113     #        root   html;
114     #        index  index.html index.htm;
115     #    }
116     #}
117 
118     
119     #配置https服务,安全的网络传输协议,加密传输,端口443,运维来配置
120     #
121     # HTTPS server
122     #
123     #server {
124     #    listen       443 ssl;
125     #    server_name  localhost;
126 
127     #    ssl_certificate      cert.pem;
128     #    ssl_certificate_key  cert.key;
129 
130     #    ssl_session_cache    shared:SSL:1m;
131     #    ssl_session_timeout  5m;
132 
133     #    ssl_ciphers  HIGH:!aNULL:!MD5;
134     #    ssl_prefer_server_ciphers  on;
135 
136     #    location / {
137     #        root   html;
138     #        index  index.html index.htm;
139     #    }
140     #}
141 }

 Nginx主要应用:静态网站部署、负载均衡、静态代理、动静分离、虚拟主机(有时间再写)

 

 

 

 

 

 

转载于:https://www.cnblogs.com/really199/p/10494599.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值