lamp架构nginx简介及源码安装常用命令

Posted dezasseis

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lamp架构nginx简介及源码安装常用命令相关的知识,希望对你有一定的参考价值。

lamp架构 =linux/unix/windows + apache/nginx + mysql/pgsql + php/python/golang

一、nginx简介

01_Nginx介绍

  • Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
  • Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。
  • Nginx相较于Apache\\lighttpd具有占有内存少,稳定性高等优势,并且依靠并发能力强,丰富的模块库以及友好灵活的配置而闻名。在Linux操作系统下,nginx使用epoll事件模型,得益于此,nginx在Linux操作系统下效率相当高。

Nginx作用

(1)直接作为http server(代替apache,对php需要FastCGI处理器支持)
(2)作为反向代理服务器实现负载均衡

02_代理服务器

代理服务器(Proxy Server)一般是指局域网内部的机器通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端。

一个完整的代理请求过程为:客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或者获得目标服务器的指定资源。 Web代理(proxy)服务器是网络的中间实体。代理位于Web客户端和Web服务器之间,扮演“中间人”的角色。代理服务器是介于客户端和Web服务器之间的另一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。

代理服务器是一种重要的服务器安全功能,它的工作主要在开放系统互联(OSI)模型的会话层,起到防火墙的作用,保证其安全性

03_正向代理(forward proxy)

正向代理是一个位于客户端和目标服务器之间的代理服务器,为了从目标服务器取得内容,客户端向代理服务器发送一个请求并指定目标,然后代理服务器向目标服务器转交请求并将获得的内容返回给客户端。
租客(客户端)、中介(代理服务器)和房东(国外网站,目标服务器)
租房子只能联系中介,因为租客不知道房东的电话。

  • 正向代理的作用:
    突破访问限制
    提高访问速度
    隐藏客户端真实IP

04_反向代理(reverse proxy)

代理服务器接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
租客(客户端)、房东亲戚(代理服务器)和房东(内部服务器)
租客(客户端)接触以为的房东(内部服务器),其实是房东亲戚,但是租客(客户端)误以为是房东(内部服务器)。
客户端(租客)发送请求到代理服务器(二房东)上,代理服务器(二房东)再把请求转发给一台真正的内部服务器(房东)来执行,再把执行结果返回给客户端(租客)。

  • 反向代理的作用:
    隐藏服务器真实IP
    负载均衡
    提高访问速度
    提供安全保障

05_Nginx优势

  • 作为Web服务器,Nginx处理静态文件、索引文件,自动索引的效率非常高
  • 作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站运行速度
  • 作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡
  • 在性能方面,Nginx是专门为性能优化而开发的,实现上非常注重效率。它采用内核Poll模型,可以支持更多的并发连接,最大可以支持对5万个并发连接数的响应,而且只占用很低的内存资源
  • 在稳定性方面,Nginx采取了分阶段资源分配技术,使得CPU与内存的占用率非常低。Nginx官方表示,Nginx保持1万个没有活动的连接,而这些连接只占用2.5MB内存,因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用的
  • 在高可用性方面,Nginx支持热部署,启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到7x24小时不间断地运行
  • 总的来说Nginx具有很高的稳定性;支持热部署;代码质量非常高,代码很规范,手法成熟,模块扩展也很容易。

06_ Nginx和Apache比较

相同点

  • 都是HTTP服务器软件
  • 功能上都采用模块化结构设计
  • 都支持通用的语言接口,如PHP、Perl、Python等
  • 支持正向、反向代理、虚拟主机、URL重写、压缩传输、SSL加密传输

不同点

  • Apache处理速度很慢,占用很多内存资源
  • 功能上,Apache所有模块支持动静态编译,Nginx模块都是静态编译的
  • 对Fcgi的支持:Apache支持的很不好,Nginx支持非常好
  • 处理连接方式:Nginx支持epoll,Apache不支持
  • 空间使用上:Nginx安装包仅几百K

二、源码安装nginx

  • 安装依赖包:安装gcc、pcre-devel、openssl-devel
yum install -y gcc pcre-devel openssl-devel
# gcc:编译环境
# pcre-devel:rewrite模块和http核心模块都会用到pcre正则表达式语法
# openssl-devel:支持https
  • 安装源码nginx
1.解压
tar zxf nginx-1.18.0.tar.gz
cd nginx-1.18.0

2.注释debug
vim auto/cc/gcc
#CFLAGS="$CFLAGS -g"
#注释此行(127行)debug可以使安装后的二进制文件更小

3.configure脚本,指定安装路径等参数

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module

# --prefix:安装路径
# --with-http_ssl_module:加密支持
# --with-http_stub_status_module:提供对基本信息状态的访问

4.安装
make && make install
  • 配置环境变量并启动服务

cd /usr/local/nginx/sbin/:变量配置此目录

vim .bash_profile:编写变量

PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin

source .bash_profile:重新读取文件,使变量生效

nginx:启动服务

  • 编写测试页


三、常用命令

nginx # 启动

nginx -t # 检测配置文件是否有语法错误,然后退出

nginx -h # 打开帮助信息

nginx -v # 显示版本信息并退出

nginx -V # 显示版本和配置选项信息,然后退出

nginx -T # 检测配置文件是否有语法错误,转储并退出
nginx -q # 在检测配置文件期间屏蔽非错误信息

nginx -p prefix # 设置前缀路径(默认是:/usr/share/nginx/)

nginx -c filename # 设置配置文件(默认是:/etc/nginx/nginx.conf)

nginx -g directives # 设置配置文件外的全局指令

-s 系列:

nginx -s reopen # 重启Nginx

nginx -s reload # 重新加载Nginx配置文件,然后以优雅的方式重启Nginx

nginx -s stop # 强制停止Nginx服务

nginx -s quit # 停止Nginx服务(处理完所有请求后再停止服务)

以上是关于lamp架构nginx简介及源码安装常用命令的主要内容,如果未能解决你的问题,请参考以下文章

lamp架构MySQL简介及源码安装

lamp架构MySQL简介及源码安装

Lamp架构nginxphpmysql源码编译安装

Lamp架构nginxphpmysql源码编译安装

lamp架构php简介及源码安装

lamp架构php简介及源码安装