Nginx

一、 Nginx 简介

1 Nginx 介绍

  • Nginx (engine x) 是一款是由俄罗斯的程序设计师 Igor Sysoev 所开发高性能的 Web 和反
    向代理服务器。第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。Nginx 是一个很强大的高性能 Web 和反向代理服务器,它具有很多非常优越的特性:在连接高并发的情况下,Nginx 是 Apache 服务不错的替代品。

2 Nginx 作用

  • http协议代理
  • 搭建虚拟主机
  • 服务的反向代理
  • 在反向代理中配置集群的负载均衡

二、反向代理

1 反向代理介绍

  • 反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为 Web 加速,即使用反向代理作为 Web 服务器的前置机来降低网络和服务器的负载,提高访问效率。

2 代理方向

2.1 正向代理

  • 正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从 原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

在这里插入图片描述

2.2 反向代理

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

3 二者之间的区别

3.1 位置不同

  • 正向代理,架设在客户机和目标主机之间;
  • 反向代理,架设在服务器端;

3.2 代理对象不同

  • 正向代理,代理客户端,服务端不知道实际发起请求的客户端;
  • 反向代理,代理服务端,客户端不知道实际提供服务的服务端;

在这里插入图片描述

三、 安装 Nginx

1 安装步骤

下载源码包---->安装环境---->配置---->编译---->安装

1.1 下载源码包

wget http://nginx.org/download/nginx-1.21.1.tar.gz

1.2 安装环境

  • nginx 是 C 语言开发,建议在 linux 上运行,本视频使用 CentOS8 作为安装环境。

gcc

  • 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,需要安装 gcc。
yum install gcc make automake

PCRE

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

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

zlib

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

Openssl

  • OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。

  • nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux安装 openssl 库。

yum install -y openssl openssl-devel

安装依赖环境命令:

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

1.3 配置

  • 检查环境是否满足安装条件。
  • 先创建临时目录
mkdir -p /var/temp/nginx
# 进入nginx-1.21.1中

参数设置如下:

# 进入nginx-1.21.1中
cd nginx-1.21.1/

./configure \
--prefix=/usr/local/nginx \
--pid-path=/usr/local/nginx/logs/nginx.pid \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/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 \

1.4 编译

make

1.5 安装

make install

2 Nginx 目录介绍

2.1 conf 目录

  • Nginx 所有配置文件的目录,极其重要。在该目录中包含一个 nginx.conf 配置文件。

2.2 html 目录

  • Nginx 的默认站点目录。

2.3 logs 目录

  • 存放 Nginx 的日志文件。

2.4 sbin 目录

  • Nginx 命令的目录,如 Nginx 的启动命令。Nginx 命令的目录,如 Nginx 的启动命令。

3 Nginx 的启动与关闭

3.1 启动 Nginx

  • Nginx 启动后会监听 80 端口,所以在启动 Nginx 时要确保 80 端口没有被占用。
  • 可通过 lsof -i :80 命令或 netstat -ntpl 命令查看 80 端口是否被占用。
  • 启动 Nginx:运行 sbin 目录下的 nginx 命令即可。
cd /usr/local/nginx/sbin

./nginx

3.2 访问 Nginx

  • 可通过浏览器访问 Nginx 检测启动是否成功。注意 Linux 中 80 端口在防火墙中是不开放的,所以需要先关闭防火墙,或者开放 80 端口。

1) 关闭防火墙命令

systemctl stop firewalld.service

2)开放 80 端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

3.3 关闭 Nginx

3.3.1 立即停止服务
  • 这种方法比较强硬,无论进程是否在工作,都直接停止进程。
./nginx -s stop
3.3.2 从容停止服务
  • 这种方法较 stop 相比就比较温和一些了,需要进程完成当前工作后再停止。
./nginx -s quit
3.3.3 killall 方法杀死进程
  • 直接杀死进程,在上面无效的情况下使用,态度强硬,简单粗暴!
killall nginx

4 Nginx 配置文件

#全局块
# 指定可以运行 nginx 服务的用户和用户组,只能在全局块配置
#user nobody;
#nginx 进程,一般数值为 cpu 核数
worker_processes 1;
#错误日志存放目录
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#进程 pid 存放位置
#pid logs/nginx.pid;
#event 块
#工作模式及连接数上限
events {
	#单个后台 worker process 进程的最大并发链接数
	worker_connections 1024;
}
#http 块

#http 块是 Nginx 服务器配置中的重要部分,代理、缓存和日志定义等绝大多数的功能
#和第三方模块的配置都可以放在这个模块中。
http {
	#文件扩展名与类型映射表
	include mime.types;
	#默认文件类型
	default_type application/octet-stream;
	#设置日志模式
	#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
	# '$status $body_bytes_sent "$http_referer" '
	# '"$http_user_agent" "$http_x_forwarded_for"';
	#nginx 访问日志
	#access_log logs/access.log main;
	#开启高效传输模式
	sendfile on;
	#激活 tcp_nopush 参数可以允许把 httpresponse header 和文件的开始放在一个文件里发布, 积极的作用是减少网络报文段的数量
	#tcp_nopush on;
	#连接超时时间,单位是秒
	#keepalive_timeout 0;
	keepalive_timeout 65;
	#开启 gzip 压缩功能
	#gzip on;
	#server 块
	#server 块和“虚拟主机”的概念有密切联系。
	server {
	#监听端口
	listen 80;
	server_name localhost;
	#编码识别
	#charset koi8-r;
	#日志格式及日志存放路径
	#access_log logs/host.access.log main;
	location / {
	#站点根目录,即网站程序存放目录
	root html;
	#首页排序
	index index.html index.htm;
	} #
	错误页面
	#error_page 404 /404.html;
	# 将服务器错误页面重定向到静态页面/50x.html
	error_page 500 502 503 504 /50x.html;
	location = /50x.html {
	root html;
	} #
	代理 PHP 脚本到 Apache 上监听 127.0.0.1:80
	#location ~ \.php$ {
	# proxy_pass http://127.0.0.1;
	#}
	#将 PHP 脚本传递到正在监听 127.0.0.1:9000 的 FastCGI 服务器
	#location ~ \.php$ {
	# root html;
	# fastcgi_pass 127.0.0.1:9000;
	# fastcgi_index index.php;
	# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
	# include fastcgi_params;
	#}
		#如果 Apache 的文档根目录与 nginx 的根目录一致,则拒绝访问.htaccess 文件
	#location ~ /\.ht {
	# deny all;
	#}
	} #
	另一个虚拟主机,混合使用 IP、名称和基于端口的配置
	#server {
	# listen 8000;
	# listen somename:8080;
	# server_name somename alias another.alias;
	# location / {
	# root html;
	# index index.html index.htm;
	# }
	#}
	# HTTPS server
	# #
	server {
	# listen 443 ssl;
	# server_name localhost;
	# 服务的证书
	# ssl_certificate cert.pem;
	# 服务端 key
	# ssl_certificate_key cert.key;
	# 会话缓存
	# ssl_session_cache shared:SSL:1m;
	# 会话超时时间
	# ssl_session_timeout 5m;
	# #加密算法
	# ssl_ciphers HIGH:!aNULL:!MD5;
	# 启动加密算法
	# ssl_prefer_server_ciphers on;
	# location / {
	# root html;
	# index index.html index.htm;
	# }
	#}
}

四、 Nginx 的使用

1 配置虚拟主机

1.1 虚拟主机介绍

  • 虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供 www 服务,这样就可以实现一台主机对外提供多个web 服务,每个虚拟主机之间是独立的,互不影响的。
  • 虚拟主机技术是互联网服务器采用的节省服务器硬件成本的技术,虚拟主机技术主要应用于 HTTP(Hypertext Transfer Protocol,超文本传输协议)服务,将一台服务器的某项或者全部服务内容逻辑划分为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬件资源。

1.2 Nginx 的虚拟主机配置方式

Nginx 支持三种类型的虚拟主机配置

  • 基于 IP 的虚拟主机
  • 基于端口的虚拟主机
  • 基于域名的虚拟主机
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值