Linux&Nginx16_Nginx安装&启动3

1. Nginx概述

  Nginx 是一款高性能的 http(web) 服务器和反向代理服务器,也可以作为电子邮件(IMAP/POP3)代理服务。

 由俄罗斯的程序设计师伊戈尔·西索夫(Igor Sysoev)采用C语言开发编写的。

 Nginx特点是占用内存少,并发处理能力强,以高性能、低系统资源消耗闻名,官方测试 nginx 能够支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。

 与Nginx同类型的web服务器还有Apache、Lighttpd(因同lighty)、Tengine(阿里巴巴的)等。Nginx的并发处理能力在同类型的web服务器中表现极好(Apache、Lighttpd),在全世界范围内大量的网站使用了Nginx,国内互联网中也大量使用了Nginx,比如:淘宝、新浪、搜狐、网易、美团等。

 Nginx是免费开源的,同时Nginx也有收费的商业版本,商业版本提供了性能优化、宕机等紧急问题处理等技术支持和服务。

 

2. Nginx应用场景

 1、http 服务器。Nginx 是一个 http 服务可以独立提供 http 服务。可以做网页静态服务器

 2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。

 3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用 nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况

  反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。举例:比如你现在很无聊,想找人聊天,这时候你拨通了联通客服10010的电话,联通的总机可能随机给你分配一个闲置的客服给你借通。这时候你如愿以偿地和客服聊了起来,问了问她目前有没有对象、微信号。。。此时联通总机充当的角色就是反向代理,你只知道和客服接通并聊了起来,具体为甚么会接通这个客服MM,怎么接通的,你并不知道。反向代理隐藏了真正的服务端,就像你每天使用百度的时候,只知道敲打www.baidu.com就可以打开百度搜索页4面,但背后成千上万台百度服务器具体是哪一台为我们服务的,我们并不知道。我们只知道这个代理服务器,它会把我们的请求转发到真实为我们服务的那台服务器那里去。如下图所示

 

 

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

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

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

3. Nginx在Linux下的安装

 准备一台虚拟机作为服务器。

 1、环境准备

  (1)需要安装gcc的环境

yum install gcc-c++

  (2)第三方的开发包

    a. PCRE

     PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。

yum install -y pcre pcre-devel

     注:pcre-devel 是使用 pcre 开发的一个二次开发库。nginx 也需要此库。

    b. zlib

     zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip,所以需要在 linux 上安装 zlib 库。

yum install -y zlib zlib-devel

    c. OpenSSL

     OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux安装 openssl 库。

yum install -y openssl openssl-devel

 2、Nginx下载

  官方网站下载 nginx:http://nginx.org/

 3、Nginx安装

  (1)把 nginx 的源码包nginx-1.8.0.tar.gz上传到 linux 系统 /usr/local目录下

    

  (2)解压缩

tar zxvf nginx-1.8.0.tar.gz

  (3)进入nginx-1.8.0目录,一次性复制以下所有内容到命令行,回车执行,即使用 configure 命令创建一个makeFile 文件

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

    执行后可以看到Makefile文件  

    

----  知识点小贴士 ----
Makefile是一种配置文件, Makefile 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile 定义了一系列的规则来指定,
哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
----  知识点小贴士 ----
configure参数
./configure \
--prefix=/usr \                                                        指向安装目录
--sbin-path=/usr/sbin/nginx \                                 指向(执行)程序文件(nginx)
--conf-path=/etc/nginx/nginx.conf \                      指向配置文件
--error-log-path=/var/log/nginx/error.log \              指向log
--http-log-path=/var/log/nginx/access.log \            指向http-log
--pid-path=/var/run/nginx/nginx.pid \                      指向pid
--lock-path=/var/lock/nginx.lock \                         (安装文件锁定,防止安装文件被别人利用,或自己误操作。)
--user=nginx \
--group=nginx \
--with-http_ssl_module \                      启用ngx_http_ssl_module支持(使支持https请求,需已安装openssl)
--with-http_flv_module \                       启用ngx_http_flv_module支持(提供寻求内存使用基于时间的偏移量文件)
--with-http_stub_status_module \     启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态)
--with-http_gzip_static_module \   启用ngx_http_gzip_static_module支持(在线实时压缩输出数据流)
--http-client-body-temp-path=/var/tmp/nginx/client/ \ 设定http客户端请求临时文件路径
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \ 设定http代理临时文件路径
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \ 设定http fastcgi临时文件路径
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ 设定http uwsgi临时文件路径
--http-scgi-temp-path=/var/tmp/nginx/scgi \ 设定http scgi临时文件路径
--with-pcre 启用pcre库

  (4)编译

make

  (5)安装

make install

4. Nginx启动与访问

 注意:启动nginx 之前,上边将临时文件目录指定为/var/temp/nginx/client, 需要在/var  下创建此目录

mkdir /var/temp/nginx/client -p

 进入到Nginx目录下的sbin目录

cd /usr/local/nginx/sbin

 输入命令启动Nginx

./nginx

 启动后浏览器输入虚拟机的IP即可访问(默认为80端口)

  

  启动后查看进程

ps aux|grep nginx

  nginx会启动两个进程,一个主进程,一个工作进程,主进程对工作进程进行维护。

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

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

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

 关闭nginx

./nginx -s stop

  或

./nginx -s quit

  或

kill -term 主pid(master进程号)

  或

kill 主pid(快速关闭,推荐使用)

重启nginx

  一种:先关闭后启动

  另一种:刷新配置文件:

./nginx -s reload

 

posted on 2022-06-22 00:36  花溪月影  阅读(131)  评论(0)    收藏  举报