什么是Nginx?
Nginx 是异步框架的网页服务器,也可以用作反向代理、负载平衡器和 HTTP 缓存。大部分 Web 服务器使用 Nginx,通常作为负载均衡器。Nginx 是免费的开源软件,根据类 BSD 许可证的条款发布。
为什么要使用nginx服务器?
我们大多数的客户在他们的服务器上使用Apache作为Web服务器,尤其是部署在一个基于PHP系统的前端并且使用mod-PHP。鉴于扩张性和性能方面的原因,我们通常会建议他们改用Nginx和FPM。
Apache是非常强大的Web服务器,模块化结构,也是Web服务端的鼻祖。除了捆绑一些其他的工具外,Apache已经成为了世上最广泛部署的开源系统,直到最近,世界上大多数网站仍运行着Apache系统。
但是,Apache并不是完美的,并且不再适合大规模系统。为什么?因为他的进程模式虽然简单而灵活,但并不适合大规模尤其是当要处理像PHP这种需要占用大量内存应用程序代码时。
通常来说,所有新的系统都应该使用Nginx和PHP-FPM来部署。这能提供高性能增长特性,并且是平衡用户和内存,CPU资源的最佳选择。已存在的系统可以在前端使用Nginx或者HAProxy以达到同样的效果,以便在当今现代网络环境中为用户提供更优质的服务。
Nginx 与 Apache 相比
Nginx 的编写有一个明确目标就是超越 Apache Web 服务器的性能。 Nginx 提供开箱即用的静态文件,使用的内存比 Apache 少得多,每秒可以处理大约四倍于 Apache 的请求。 低并发下性能与 Apache 相当,有时候还低于,但是在高并发下 Nginx 能保持低资源低消耗高性能。还有高度模块化的设计,模块编写简单。配置文件简洁。
什么是正向代理,什么是反向代理? 如何区别?
代理服务器的作用就是将客户端的 HTTP 请求提交到真实服务器,得到响应后再返还给客户端(所谓代理就是第三方的介入)
正向代理:是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
反向代理是指服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器簇的存在。
两者区别:
1.用途差异
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率;
反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。
2.安全差异
正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此必须采取安全措施以确保仅为经过授权的客户端提供服务;反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。
3.客户端口不同
前向代理作为客户端的代理,将从互联网上获取的资源返回给一个或多个的客户端,服务端(如Web服务器)只知道代理的IP地址而不知道客户端的IP地址;
反向代理是作为服务器端(如Web服务器)的代理使用,而不是客户端。
客户端借由前向代理可以间接访问很多不同互联网服务器(簇)的资源,而反向代理是供很多客户端都通过它间接访问不同后端服务器上的资源,而不需要知道这些后端服务器的存在,而以为所有资源都来自于这个反向代理服务器。
如何安装Nginx
熟悉Cenos7相关命令(centos7默认没有 netstat 命令,需要安装 net-tools 工具,yum install -y net-tools)
开放端口: firewall-cmd --zone=public --add-port=端口号/tcp --permanent
关端口:firewall-cmd --zone=public --remove-port=端口号/tcp --permanent
生效配置:firewall-cmd --reload
查看防火墙以开放的端口:firewall-cmd --zone=public --list-ports
关闭防火墙:systemctl stop firewalld.service
防火墙状态:firewall-cmd --state
查看监听的端口:netstat -lnpt
检查端口被哪个进程占用:netstat -lnpt |grep 端口号
查看端口详细信息:ps 端口号
强制关闭端口:kill -9 端口号
解压通常用法: tar -zxvf
官网下载相应nginx版本tar包
使用xftp上传到linux
解压tar包
安装所需依赖:
yum install pcre-devel
yum install zlib zlib-devel
yum install openssl openssl-devel
yum -y install gcc gcc-c++ autoconf automake make 安装c++编译环境
进入解压开的nginx-1.16.1文件夹找到 configur 执行
然后执行make(nginx是一个完全由C语言编写的程序
make命令是将文件编译就想java的javac一样)
在执行make install(make install这个命令是将nginx安装)
安装好后可以在./usr/local/目录下发现一个nginx的文件夹.
这个就是安装好后的nginx。安装好后目录结构如下
修改nginx.conf配置文件实现反向代理
文件在: /usr/local/nginx/conf/nginx.conf是核心配置文件