Nginx 的基本介绍和使用

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3代理服务器。Nginx由俄罗斯的程序员Igor Sysoev开发,最初是为了解决C10k问题(即同时处理10,000个网络连接的挑战)而设计的。它现在是世界上使用最广泛的Web服务器之一,特别是对于高流量的网站来说,如Netflix、Airbnb和Dropbox等。

Nginx以其高性能、稳定性、丰富的功能集、简单的配置以及低资源消耗而闻名。它使用异步事件驱动的架构,这使得Nginx在处理高并发连接时效率非常高,而且内存占用小。

下面介绍Nginx的基本使用和常用的web服务器以及反向代理服务器的配置方法。

一、Nginx的主要特点包括:

  • 作为Web服务器:提供静态文件服务,支持自动索引、开箱即用的压缩(如gzip)、SSL/TLS加密等。
  • 作为反向代理服务器:将客户端的请求转发到后端的多个服务器,并将服务器的响应返回给客户端,提高了网站的灵活性和可扩展性。
  • 媒体流传输:Nginx支持流媒体传输,适用于在线视频和音频的分发
  • 负载均衡:可以在多个后端服务器之间分配客户端请求,以提高网站的性能和可靠性。
  • 缓存:能够缓存后端服务器的响应,减少后端服务器的负载,加快响应速度。
  • 安全特性:支持限制IP地址访问、防止DDoS攻击等安全特性。

二、Nginx的基本使用:

  1. 安装:Nginx可以在多种操作系统上安装,包括Linux、Windows、Mac OS等。Linux系统中可以使用包管理器安装,如在Ubuntu上可以使用sudo apt-get install nginx

  2. 配置:Nginx的配置文件位于/etc/nginx/nginx.conf(在大多数Linux发行版中)。此文件用于控制Nginx的行为,例如设置工作进程数、配置虚拟主机、定义反向代理规则等。

  3. 启动、停止和重载配置

    • 启动Nginx:sudo systemctl start nginx(在使用systemd的系统中)。
    • 停止Nginx:sudo systemctl stop nginx
    • 重载配置(在更改配置文件后):sudo systemctl reload nginx或者sudo nginx -s reload
  4. 虚拟主机配置:可以在/etc/nginx/sites-available/目录下创建配置文件来定义虚拟主机,然后创建一个到/etc/nginx/sites-enabled/的符号链接来启用这些虚拟主机。

  5. 查看日志:Nginx的访问日志和错误日志分别位于/var/log/nginx/access.log/var/log/nginx/error.log

三、作为Web服务器的基本配置和使用:

使用 Nginx 作为 Web 服务器时,您需要进行一些基本配置,以便能够托管和提供 Web 内容。以下是一些基本步骤和配置示例,帮助您开始使用 Nginx:

1. 安装 Nginx

首先确保您已经在服务器上安装了 Nginx。安装方法取决于您的操作系统。例如,在 Ubuntu 上,您可以使用以下命令安装 Nginx:

sudo apt update
sudo apt install nginx

2. 配置 Nginx

Nginx 的配置文件通常位于 /etc/nginx 目录中。主配置文件是 /etc/nginx/nginx.conf,但网站特定的配置通常放在 /etc/nginx/sites-available 目录中,并通过符号链接到 /etc/nginx/sites-enabled 目录来启用。

创建站点配置
  1. 转到 /etc/nginx/sites-available 目录并创建一个新的配置文件,例如 your_domain

sudo nano /etc/nginx/sites-available/your_domain

     2. 在该文件中,您可以定义服务器块(server block),这相当于 Apache 的虚拟主机。以下是一个基本的示例配置,用于托管静态网站: 

server {listen 80;server_name your_domain.com www.your_domain.com;root /var/www/your_domain/html;index index.html index.htm;location / {try_files $uri $uri/ =404;}
}
  • listen 指定了 Nginx 监听的端口。
  • server_name 设置了域名。
  • root 指定了网站的根目录。
  • index 指定了默认提供的索引文件。
  • location / 块定义了处理请求的方式。

Nginx的灵活性和性能使其成为面向现代Web应用的理想选择,无论是作为单独的Web服务器,还是与其他服务器(如Apache)结合使用。通过合理配置和优化,Nginx可以提供快速、可靠的服务,以支持从小型个人项目到大型企业级应用的各种需求。

   3. 保存并关闭文件。

启用站点
  1. 通过在 /etc/nginx/sites-enabled 目录中为您的配置文件创建一个符号链接来启用站点:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

    2. 检查 Nginx 配置是否有语法错误:

sudo nginx -t

   3. 重新加载 Nginx 以应用更改:

sudo systemctl reload nginx

 3. 防火墙配置

确保您的防火墙允许 HTTP 和 HTTPS 流量。在 Ubuntu 上,如果您使用 UFW 防火墙,可以这样做:

sudo ufw allow 'Nginx Full'

 4. 测试配置

在 Web 浏览器中输入您的域名,看看您的网站是否能够正确加载。

四、作为反向代理服务器的基本配置和使用

配置Nginx作为反向代理服务器涉及到修改Nginx的配置文件,通常是在/etc/nginx/nginx.conf文件或在/etc/nginx/sites-available/目录下的特定网站配置文件中。以下是基本步骤和一个简单的配置示例,用于将Nginx设置为将请求代理到后端服务器。

1、基本步骤:

  1. 打开配置文件:首先,需要打开Nginx的配置文件。如果你为每个站点使用单独的配置文件,则应在/etc/nginx/sites-available/目录下创建或修改文件。

  2. 设置反向代理:在适当的server块中,使用location指令定义要代理的URL模式,然后使用proxy_pass指令指定后端服务器的地址。

  3. 配置请求头:可选地,可以使用proxy_set_header指令添加或修改传递给后端服务器的请求头。

  4. 重启Nginx:配置完成后,需要重启Nginx以使更改生效。

2、示例配置:

假设你希望所有到http://yourdomain.com/app/的请求都被代理到运行在http://backendserver:8080的后端服务器。你的配置可能看起来像这样:

server {listen 80;server_name yourdomain.com;location /app/ {proxy_pass http://backendserver:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}
  • server_name:定义当前server块处理哪个域名的请求。
  • location /app/:指定该块配置应用于URI以/app/开头的请求。
  • proxy_pass http://backendserver:8080;:将请求代理到指定的后端服务器和端口。
  • proxy_set_header:设置或重写传递到后端服务器的请求头。这些行确保了后端服务器能够接收到正确的IP地址和协议。

3、注意事项:

  • 确保proxy_pass后的URL与location指令中定义的路径匹配。如果location指定了一个路径(如/app/),则proxy_pass中也应相应地调整URL。
  • 如果使用SSL/TLS(https),确保在配置中包含SSL证书和密钥的指令,并监听443端口。
  • 一旦配置文件修改完成,可以使用nginx -t命令测试配置文件的语法正确性。如果一切正常,使用systemctl restart nginx或你系统中相应的命令重启Nginx。

通过以上步骤,你可以将Nginx配置为反向代理服务器,将请求代理到一个或多个后端服务器,实现负载均衡和增强的安全性。

Nginx的灵活性和性能使其成为当前最流行的Web服务器之一,适用于从小型个人项目到大型企业级应用的各种场景

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/693166.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

0220作业

C语言实现LED1闪烁 led.h #ifndef __LED_H__ #define __LED_H__//RCC寄存器封装 #define RCC_MP_AHB4_ENSETR (*(volatile unsigned int*)0x50000A28) //寄存器封装//GPIO寄存器封装 typedef struct{volatile unsigned int MODER; //00volatile unsigned int OTYPER; //04vol…

web移动端适配有哪些解决方案?每个方案的优缺点评估

移动端适配的解决方案主要包括以下几种: rem方案:这是最早被广泛采用和讨论的移动端适配方案。通过在页面上使用rem单位来控制页面元素的大小,实现在不同尺寸的设备上保持界面展示效果的一致性。这种方案的优点在于简单易用,但缺点…

java数据结构与算法刷题-----LeetCode144. 二叉树的前序遍历

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 解题思路 利用递归,每次入栈一个结点(每次递归都是…

优思学院【六西格玛案例】美国医院急诊部满意度提升

今天,优思学院来分享一个早期六西格玛项目的案例,项目背景是这样的,多年前,美国犹他州盐湖城的LDS医院已经实施了许多最佳实践。医院提供了床旁登记、高级分诊协议、护理点测试和实时放射学检查。一个强大而全面的持续质量改进计划…

【Python】OpenCV-图像滤波

图像滤波 1. 引言 在图像处理中,滤波是一种常见的技术,用于去除图像中的噪声、平滑图像或突出图像的某些特征。本文将通过OpenCV库演示几种常见的滤波方法,每个滤波方法的原理和适用场景。 2. 代码示例 以下是一个使用OpenCV库的代码示例…

CSS三大定位方式(浮动、定位、弹性盒)详细解析

CSS三大定位方式 前言:作为一名前端开发,已经工作2年了。由于自己是半路出家,从嵌入式方向转到前端开发,都是边百度边开发,很多基础都不了解,只要解决问题就好,但是近来为了让自己知识体系化&a…

北京高考数学填空题真题练一练(2014-2023)

距离2024年高考还有不到四个月的时间,今天我们来看看北京市的高考数学题真题。最近几年,只有北京、天津、上海三个直辖市的高考题是自主命题,其他省份全部是使用教育部统一命题的试卷。而且北京、天津、上海的数学现在也不再区分文理卷了&…

FastGPT配置文件及OneAPI程序:

FastGPT配置文件及OneAPI程序:百度网盘 请输入提取码 提取码:wuhe 创建fastgpt目录:mkdir fastgpt 切换到fastgpt目录:cd fastgpt 下载docker-compose文件:curl -O https://raw.githubusercontent.com/labring/Fast…

利用iSCSI服务部署IP SAN网络存储服务

一、配置环境(Vmware WorkStation虚拟环境) 服务端与客户端OS:openEuler 22.03-LTS CPU:1U1C 内存:2G 硬盘:5个SCSI磁盘,其中一个作为系统盘,另外四个配置为RAID5阵列 服务器IP…

TOUCHDESIGNER(1-2) 元件

元件来了 一级 二级 三级!!!

MySQL高级特性篇(9)-在MySQL中使用分布式事务

在MySQL数据库中,分布式事务是一种用于管理有关多个数据库之间的数据一致性和事务处理的技术。通过使用分布式事务,可以在多个数据库节点之间进行数据操作,并确保事务在所有节点上的一致性。 在MySQL中,使用分布式事务可以采用两…

2024PMP备考-高质量PMP真题和很详细解析(3)

本专题,华研荟专门为大家讲解最近两年在中国大陆、香港、澳门地区的PMP考试真题,并且提供比较详细的解析,让大家知其然,还知其所以然。帮助大家最后20天有效冲刺,一次性3A通过2024年PMP考试。 2024年PMP考试新考纲-近年…

Flask 学习100-Flask-SocketIO 结合 xterm.js 实现网页版Xshell

前言 xterm.js 是一个使用 TypeScript 编写的前端终端组件,可以直接在浏览器中实现一个命令行终端应用。 可以实现 web-terminal 功能,类似于Xshell 操作服务器。 Flask-SocketIO 快速入门与使用基础参考前面这篇https://www.cnblogs.com/yoyoketang/p/18022139 前后端交互…

【AI应用】MagicAnimate项目在COLAB在线部署----通过图片生成舞蹈视频

本专栏主要记录人工智能的应用方面的内容,包括chatGPT、AI绘图等等; 在当今AI的热潮下,不学习AI,就要被AI淘汰;所以欢迎小伙伴加入本专栏和我一起探索AI的应用,通过AI来帮助自己提升生产力; 订阅后可私聊我获取 《从零注册并登录使用ChatGPT》《从零开始使用chatGPT的AP…

个人建站前端篇(六)插件unplugin-auto-import的使用

vue3日常项目中定义变量需要引入ref,reactive等等比较麻烦,可以通过unplugin-auto-import给我们自动引入 * unplugin-auto-import 解决了vue3-hook、vue-router、useVue等多个插件的自动导入,也支持自定义插件的自动导入,是一个功能强大的typ…

数据结构:跳表讲解

跳表 1.什么是跳表-skiplist1.1简介1.2设计思路 2.跳表的效率分析3.跳表实现3.1类成员设计3.2查找3.3插入3.4删除3.5完整代码 4.skiplist跟平衡搜索树和哈希表的对比 1.什么是跳表-skiplist 1.1简介 skiplist本质上也是一种查找结构,用于解决算法中的查找问题&…

C++面试高频问题汇总( 一)

文章目录 1. 面向对象 struct和class有什么区别1.1 封装什么是封装 1.2 继承1.3 多态1.3.1 什么是多态?1.3.2 虚函数作用和意义1.3.3 什么是纯虚函数和抽象类 2. STL2.1 什么是STL 其创建目的是什么2.2 STL的基本概念以及组成2.3 请简单介绍STL的六大组件2.4 什么是…

Fluter学习3 - Dart 空安全

Dart 空安全: 空类型操作符 (?)空值合并操作符 (??)空值断言操作符 (!)延迟初始化 (late) 1、空类型操作符 (?) 当你想要根据一个表达式是否为 null 来执行某个操作时,你可以使用 (?)语法:expression1?.expression2如果 expression1…

Python开发户型图编辑器-2D/3D户型图展示

在现代家居设计中,户型图是不可或缺的工具,它为设计师和业主提供了一个直观的展示和规划空间的方式。然而,传统的户型图编辑软件往往复杂难用,限制了设计师的创作灵感。我们为您带来了一款全新的Python开发的户型图编辑器&#xf…

字节飞书面试算法题

后端]计算没有重复字符的子字符串数量 题目描述 给定你一个只包含小写英文字母的字符串 s 。如果一个子字符串不包含任何字符至少出现两次(换句话说,它不包含重复字符),则称其为 特殊 子字符串。你的任务是计算 特殊 子字符串的数…