NGINX--(1)

前言

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3/SMAP)代理服务器 。

特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡服务器。在性能上,Nginx占用很少的系统资源,能支持更多的并发连接,达到更高的访问效率;在功能上,Nginx是优秀的代理服务器和负载均衡服务器;在安装配置上,Nginx安装简单、配置灵活。

一、正向代理和反向代理

正向代理

正向代理类似一个跳板机,代理访问外部资源。
作用:
(1)访问原来无法访问的资源
(2) 可以做缓存,加速访问资源
(3)对客户端访问授权,上网进行认证
(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
在这里插入图片描述

反向代理

反向代理的感觉是,客户端是无感知代理的存在的,反向代理对外都是透明的,访问者者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

在这里插入图片描述作用:
1,保证内网的安全,可以使用反向代理提供WAF(web application firewall)功能,阻止web攻击
2,负载均衡,通过反向代理服务器来优化网站的负载

二、web服务搭建

单机版

需要 2个服务器(反向代理服务器和web服务器)

web服务器:主服务器 192.168.AAA.31
反向代理服务器: 克隆新建一个 nginx1 192.168.AAA.21
在这里插入图片描述

centos7:
1,修改网卡配置文件,修改ipaddr
删除uui
vim /etc/sysconfig/network-scripts/ifcfg-ens33
2,修改主机名称
vim /etc/hostname //改名

centos6:
1,修改了三个地方,删除了uuid 和 hwaddr 修改了ipaddr
vim /etc/sysconfig/network-scripts/ifcfg-eth0
2,修改主机名称
vim /etc/sysconfig/network
3,删除mac地址和网卡对应文件
rm -rf /etc/udev/rules.d/70-persistent-net.rules
4,修改主机和ip地址对应文件
vim /etc/hosts
192.168.106.121 nginx1

查看防火墙状态: service iptables status
关闭防火墙: service iptables stop;
开机自动关闭:chkconfig iptables off;

查看安全子系统 :/usr/sbin/sestatus -v
SELinux是一种安全子系统,它能控制程序只能访问特定文件
vi /etc/sysconfig/selinux 文件
SELINUX=disabled
重启系统:reboot
部署服务器(克隆)

web版

同样克隆电脑(克隆后的所有操作都在虚拟机里面完成,重启后再使用ssh工具去连接)
前面步骤一样 不用改安全子系统
配置 tomcat 启动运行web项目
复制apache-tomcat-9.0.52.tar.gz到虚拟机下 /root/software
解压:
tar -xzvf /root/software/apache-tomcat-9.0.52.tar.gz -C /usr/
进入目录:

cd /usr/apache-tomcat-9.0.52/
启动tomcat: ./bin/startup.sh
另外链接一个窗口: cd /usr/apache-tomcat-9.0.52/
查看日志: tail -F logs/catalina.out
在这里插入图片描述
为了更方便的启动和关闭tomcat配置环境变量:
在tomcat目录下执行pwd: /usr/apache-tomcat-9.0.52
vim /etc/profile 配置环境变量

export TOMCAT_HOME=usr/apache-tomcat-9.0.56
export JAVA_HOME=/usr/java/jdk1.8.0_311-amd64
export PATH=$PATH:$JAVA_HOME/bin:$TOMCAT_HOME/bin
export ClASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

echo $TOMCAT_HOME
发现没有用

让配置生效: source /etc/profile
显示结果: echo $TOMCAT_HOME

在这里插入图片描述
环境变量配置好可以在任意目录下都可以启动关闭tomcat
startup.sh
shutdown.sh

  • 查看tomcat是否在运行: ps -ef|grep tomcat|grep -v grep
  • 查看端口号是否被占用: netstat -ano|grep 8080
  • 测试(确保里面防火墙关闭的):http://192.168.106.122:8080/

部署安装nginx

1)确保进行了安装了linux常用必备支持库。

(windows vs编译写好的c和c++,在linux下用g++和gcc编译c)
检查是否安装了g++、gcc。rpm -qa | grep gcc 之后需要出现3个包如下图所示。如果没有出现。需要安装g++、gcc。
检查是否安装gcc-c++ rpm -qa|grep gcc --有的已经安装但版本低,检查时仍然出错
如果有就不需要安装
yum install -y gcc-c++

2)准备和安装 pcre-8.38.tar.gz。

该文件为正则表达式库。让nginx支持rewrite需要安装这个库(rewrite :和apache等web服务软件一样,rewrite的组要功能是实现RUL地址的重定向。Nginx的rewrite功能需要PCRE软件的支持,即通过perl兼容正则表达式语句进行规则匹配的。)。

( PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。 nginx通过ngx_http_rewrite_module模块支持url重写)

pcre: http://www.pcre.org/

pcre安装:
解压pcre-8.12.tar.gz 到 /usr
tar -xzvf /root/software/pcre-8.44.tar.gz -C /usr 解压
进入解压后的目录 配置
cd /usr/pcre-8.44/
./configure(./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC)
编译
make(是用来编译的,它从Makefile中读取指令,然后编译。)
安装
make install(用来安装的,它也从Makefile中读取指令,安装到指定的位置。)
检查是否安装
pcre-config --version

3)安装gzip模块需要 zlib 库

  yum install -y zlib-devel

nginx安装

tar -xzvf /root/software/nginx-1.18.0.tar.gz -C /usr/
进入目录
cd /usr/nginx-1.18.0/

配置
./configure
编译 #make

安装 # make install

查看是否安装成功 ls /usr/local/nginx/

进入安装目录 cd /usr/local/nginx/

启动:(进入上面红圈安装的目录,在sbin中,有nginx的启动文件) ./sbin/nginx
(如果报错 error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory,用如下方法查看缺少)
ldd $(which /usr/local/nginx/sbin/nginx)
ldd是list, dynamic, dependencies的缩写, 意思是, 列出动态库依赖关系

测试:(在浏览器访问当前nginx服务器)

 vim conf/nginx.conf 查看访问详细信息 

修改监听端口号: :36 listen 8088
重启服务:
/usr/local/nginx/sbin/nginx -s reload
再次访问:

,反向代理配置

让我们可以通过nginx访问webserver1上的tomcat
vim /usr/nginx-1.18.0/conf/nginx.conf
在43 3yy->p
在46下面加入(注意要自己IP):

location /qy141/ {

}
然后再回去启动nginx

  • 查看nginx进程 ps -ef|grep nginx |grep -v grep
  • 存在进程,重启nginx : /usr/local/nginx/sbin/nginx -s reload
  • 不存在进程,直接启动nginx: /usr/local/nginx/sbin/nginx
  • 测试:
    http://192.168.106.121:8088/qy141/ssm_01_war/
    nginx也可以成功访问
    在这里插入图片描述

配置文件详情

在这里插入图片描述
全局设置

Events

HTTP

重要配置解释:

  • main(全局设置,设置的指令将影响其他所有设置)
  • server(主机设置,用于指定主机和端口)
  • upstream(负载均衡服务器设置,设置一系列的后端服务器)
  • location(URL匹配特定位置的设置,用于匹配网页位置)。

详细配置:

全局配置 :

  • user是个主模块指令,指定Nginx Worker进程运行用户以及用户组,默认由nonody账号运行。
  • worker_processes是个主模块指令,指定了Nginx要开启的进程数。每个Nginx进程平均耗费10M~12M内存 ,支持5W并发。建议指定和CPU的数量一致即可。
  • error_log是个主模块指令,用来定义全局错误日志文件。日志输出级别有debug、info、
  • notice、warn、error、 crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。
  • pid是个主模块指令,用来指定进程pid的存储文件位置。
  • worker_rlimit_nofile用于绑定worker进程和CPU, Linux内核2.4以上可用

events

事件指令是设定Nginx的工作模式及连接数上限
HTTP 服务器配置

include是个主模块指令,实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度。类似于Apache中的include方法。

default_type属于HTTP核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式

log_format是Nginx的HttpLog模块指令,用于指定Nginx日志的输出格式。main为此日志输出格式的名称,可以在下面的access_log指令中引用。

client_max_body_size用来设置允许客户端请求的最大的单个文件字节数;

client_header_buffer_size用于指定来自客户端请求头的headerbuffer大小。对于大多数请求,1K的缓冲区大小已经足够,如果自定义了消息头或有更大的Cookie,可以增加缓冲区大小。这里设置为32K;

large_client_header_buffers用来指定客户端请求中较大的消息头的缓存最大数量和大小, “4”为个数,“128K”为大小,最大缓存量为4个128K;

sendfile 参数用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞;

keepalive_timeout 设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接;

client_header_timeout设置客户端请求头读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误;

client_body_timeout设置客户端请求主体读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误,默认值是60;

send_timeout指定响应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。

server虚拟机配置:

server标志定义虚拟主机开始

listen 用于指定虚拟主机的服务端口

server_name 用来指定IP地址或者域名,多个域名之间用空格分开

index 用于设定访问的默认首页地址

root指令用于指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路径。

Charset用于 设置网页的默认编码格式。

access_log用来指定此虚拟主机的访问日志存放路径

main用于指定访问日志的输出格式。

posted @ 2022-02-14 19:08  啧啧啧|(* ̄ ̄*)  阅读(8)  评论(0)    收藏  举报  来源