【服务器】Nginx

news/2025/3/3 15:36:53/

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配置文件,然后以优雅的方式重启Nginxnginx -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 -mkillall 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;  # 拒绝的ipallow 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; # 限制用户上传文件大小,默认1Mlocation / {# 使用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; # 域名或者IPlocation / {    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; # 域名或者IPlocation / {    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)


http://www.ppmy.cn/news/1576318.html

相关文章

bc命令学习8 数组的用法

bc命令支持数组的使用 1 数组的使用 #数组格式 var[i] #赋值 a[1]3 a[10]50 #未赋值的的数组元素值为0 a[20] #0 #序号从0开始,不支持负数序号 a[0]12 函数中使用数组 #定义函数,传入数组参数 define test(a[]){return (a[0]a[1]a[2])/3 }b[0]1 b[1]2 b[2]8 #调用函数计算 te…

Deepseek助力思维导图与流程图制作:高效出图新选择

在当今快节奏的工作和学习环境中&#xff0c;高效的工具对于提升生产力至关重要。思维导图和流程图作为整理思路、展示结构和流程的有效方式&#xff0c;广泛应用于各个领域。然而&#xff0c;传统的制作方式往往耗费大量时间和精力。本文将介绍一种借助deepseek和mermaid.live…

数字孪生概念、数字孪生技术架构、数字孪生应用场景,深度长文学习

一、数字孪生起源与发展 1.1 数字孪生产生背景 数字孪生的概念最初由Grieves教授于2003年在美国密歇根大学的产品全生命周期管理课程上提出&#xff0c;并被定义为三维模型&#xff0c;包括实体产品、虚拟产品以及二者间的连接&#xff0c;如下图所示&#xff1a; 2011年&…

kotlin的lateinit声明 的变量可能为null吗?

kotlin的lateinit声明 的变量可能为null吗&#xff1f; DeepSeek R1 思考 26 秒 思考过程 嗯&#xff0c;用户问的是Kotlin中的lateinit变量是否可能为null。首先&#xff0c;我需要回顾一下lateinit的作用和特性。lateinit用于延迟初始化一个非空类型的变量&#xff0c;这样…

DeepSeek在初创企业、教育和数字营销领域应用思考

如今&#xff0c;像 DeepSeek 这样的人工智能工具正在改变企业的运营方式&#xff0c;优化流程并显著提高生产力。通过重复任务的自动化、大量数据的分析以及内容创建效率的提高&#xff0c;组织正在寻找新的竞争和卓越方式。本文介绍了 DeepSeek 如何用于提高三个关键领域的生…

TrustRAG:通过配置化模块化的检索增强生成(RAG)框架提高生成结果的可靠性和可追溯性

TrustRAG旨在风险感知的信息检索场景中提高生成内容的一致性和可信度。用户可以利用私有语料库构建自己的RAG应用程序&#xff0c;研究库中的RAG组件&#xff0c;并使用定制模块进行实验。论文展示了TrustRAG系统在摘要问答任务中的应用&#xff0c;并通过案例研究验证了其有效…

Python核心技术,Django学习基础入门教程(附环境安装包)

文章目录 前言1. 环境准备1.1Python安装1.2选择Python开发环境1.3 创建虚拟环境1.4 安装 Django 2. 创建 Django 项目3. Django项目结构介绍4. 启动开发服务器5. 创建 Django 应用6. 应用结构介绍7. 编写视图函数8. 配置 URL 映射9. 运行项目并访问视图10. 数据库配置与模型创建…