云计算百科
云计算领域专业知识百科平台

【服务器】Nginx

Nginx

Nginx是一款高性能的 HTTP 服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师伊戈尔·西索夫(lgor Sysoev)所开发,官方测试 nginx 能够支支撑 5万并发链接,并且 CPU、内存等资源消耗却非常低,运行非常稳定。

在这里插入图片描述

反向代理是指客户端无法感知代理,因为客户端访问网络不需要配置,只要把请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据,然后再返回到客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址

动静分离是指为了加快网站的解析速度,可以把动态页面和静态页面交给不同的服务器来解析,加快解析的速度,降低由单个服务器的压力

应用场景

Nginx 应用场景:

  • HTTP服务器:Nginx是一个 http 服务可以独立提供http服务,可以做网页静态服务器。
  • 虚拟主机:可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟主机。
  • 反向代理,负载均衡:当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

Nginx安装

Windows

1、下载 Nginx

官网下载,选择稳定版

2、解析安装到指定目录下
3、启动 Nginx

使用命令提示符进入nginx中,输入命令

start nginx

回车确认是会出现一闪,这是正常现象

4、查看任务进程

tasklist /fi "imagename eq nginx.exe"

5、访问

nginx默认首页是 http://localhost:80 ,默认端口号是80

6、Nginx使用

将内容上传到服务器的 /usr/local/nginx/html 下即可访问

Linux

1、安装 gcc 环境及第三方开发包

yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

gcc

yum install gcc-c++

pcre

PCRE(Perl Compatible Regular Expressions)是一个 Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用 pcre 来解析正则表达式,而 pcre-devel 是使用 pcre 开发的一个二次开发库。

yum install -y pcre pcre-devel

zlib

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

yum install -y zlib zlib-devele

openssl

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

yum install -y openssl openssl-devel

2、下载 Nginx 压缩包

方式一:官网下载

官网:http://nginx.org/en/download.html

方式二:命令下载

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

3、解压

tar -zxf nginx-1.25.1.tar.gz

4、配置 Nginx

进入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

将临时文件目录指定为/var/temp/nginx/client,需要创建此目录:mkdir /var/temp/nginx/client -p

执行后可以看到Makefile文件

Makefile 是一种配置文件,一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。

5、编译安装 Nginx

make&&make install

6、启动 Nginx

进入到Nginx目录下的sbin目录

cd /usr/local/nginx/sbin

输入命令启动Nginx

./nginx

# 退出
./nginx -s stop
./nginx -s quit

# 重新加载配置文件
./nginx -s reload

7、访问

方式一:

curl http://localhost:80

方式二:

在浏览器访问 http://localhost:80

访问前开放端口:firewall-cmd –zone=public –add-port=80/tcp –permanent

常用命令

nginx -s start # 启动 NGINX 服务

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

nginx -s stop #强制停止Nginx服务
nginx -s quit #优雅地停止Nginx服务(即处理完所有请求后再停止服务)

nginx -s reopen # 重新打开日志文件

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

nginx -?,-h #打开帮助信息

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

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

nginx -q #在检测配置文件期间屏蔽非错误信息

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

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

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

# 加载 NGINX 模块。NGINX 支持多种模块,例如缓存、SSL 终止、负载均衡等,可以使用此命令加载这些模块。
nginx -m

killall nginx #杀死所有nginx进程

配置

通过nano 编辑器,可以使用其他编辑器,例如 VS Code 或 Sublime Text。

sudo nano /etc/nginx/nginx.conf

配置:

# 全局块
user www-data;
worker_processes 2; ## 默认1,一般建议设成CPU核数1-2倍
error_log logs/error.log; ## 错误日志路径
pid logs/nginx.pid; ## 进程id

# Events块
events {
# 使用epoll的I/O 模型处理轮询事件。
# 可以不设置,nginx会根据操作系统选择合适的模型
use epoll;

# 工作进程的最大连接数量, 默认1024个
worker_connections 2048;

# http层面的keep-alive超时时间
keepalive_timeout 60;

# 客户端请求头部的缓冲区大小
client_header_buffer_size 2k;
}

# http块
http {
include mime.types; # 导入文件扩展名与文件类型映射表
default_type application/octet-stream; # 默认文件类型

# 日志格式及access日志路径
log_format main '$remote_addr – $remote_user [$time_local] $status '
'"$request" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;

# 允许sendfile方式传输文件,默认为off。
sendfile on;
tcp_nopush on; # sendfile开启时才开启。

# http server块
# 简单反向代理
server {
listen 80;
server_name domain2.com www.domain2.com;
access_log logs/domain2.access.log main;

# 转发动态请求到web应用服务器
location / {
proxy_pass http://127.0.0.1:8000;
deny 192.24.40.8; # 拒绝的ip
allow 192.24.40.6; # 允许的ip
}

# 错误页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

# 负载均衡
upstream backend_server {
server 192.168.0.1:8000 weight=5; # weight越高,权重越大
server 192.168.0.2:8000 weight=1;
server 192.168.0.3:8000;
server 192.168.0.4:8001 backup; # 热备
}

server {
listen 80;
server_name big.server.com;
access_log logs/big.server.access.log main;

charset utf-8;
client_max_body_size 10M; # 限制用户上传文件大小,默认1M

location / {
# 使用proxy_pass转发请求到通过upstream定义的一组应用服务器
proxy_pass http://backend_server;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
}

}
}

可以配置多个页面,即多个server,直接复制在下面写

可以实现不同域名同一端口访问不同的页面,只需要保证多个 server 中的端口相同,而域名不同

重启生效:

sudo systemctl restart nginx

反向代理

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

例子:

在这里插入图片描述

1、将 travel 项目部署到 Tomcat 中的 webapps 目录中

将 travel 项目打包为 ROOT 文件名

<build>
<finalName>ROOT</finalName>
</build>

删除 webapps 目录下的所有文件

rm -rf ./*

删除当前目录下所有文件,主要不要少.,不然会删除linux下大部分文件

webapps 下只有 ROOT 则不需要输入项目名就可以直接访问到

2、启动Tomcat

在 Tomcat 的 bin 目录下执行命令

./startup.sh

3、配置 Nginx

upstream tomcat-travel {
server 192.168.123.123:8080;
}

server {
listen 80; # 默认端口号
server_name yourdomain.com; # 域名或者IP

location / {
proxy_pass http://tomcat-travel;
index index.html; # 默认访问资源的名称
}

error_page 500 502 503 504 /50x.html; # 错误页面
location = /50x.html{
root html;
}
}

负载均衡

负载均衡,英文名称为Load Balance,负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

例子:

1、创建 Tomcat 集群

将 Tomcat 复制三份,并分别修改端口为8080、8081、8082

在这里插入图片描述

分别启动三个 Tomcat 服务

在这里插入图片描述

2、配置 Nginx

upstream tomcat-travel {
server 192.168.123.123:8080 weight=2;
server 192.168.123.123:8081;
server 192.168.123.123:8082;
}

server {
listen 80; # 默认端口号
server_name yourdomain.com; # 域名或者IP

location / {
proxy_pass http://tomcat-travel;
index index.html; # 默认访问资源的名称
}

error_page 500 502 503 504 /50x.html; # 错误页面
location = /50x.html{
root html;
}
}

默认权重是1,按照权重比例随机访问

参考

Linux系统下安装配置nginx(保姆级教程)_nginx下载安装教程-CSDN博客

nginx(NGINX)详细下载安装及使用教程(非常适合入门)_nginx下载-CSDN博客

nginx常用命令大全_nginx命令大全-CSDN博客

nginx详细参数配置(史上最全) – hanease – 博客园 (cnblogs.com)

万字长文看Nginx配置详解! – 知乎 (zhihu.com)

赞(0)
未经允许不得转载:网硕互联帮助中心 » 【服务器】Nginx
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!