首页 > 系统相关 >nginx入门与实践

nginx入门与实践

时间:2024-06-15 16:04:26浏览次数:11  
标签:http 入门 nginx 实践 server NGINX proxy listen

当谈到NGINX的入门与实践时,理解基本概念并能够应用实际场景非常重要。NGINX是一个高性能的HTTP和反向代理服务器,也可用作负载均衡器和HTTP缓存。以下是一些入门级别的NGINX实践和代码示例,帮助你开始学习和使用它。

1. 安装和基本配置

安装NGINX

首先,你需要安装NGINX。具体安装方法取决于你的操作系统,例如在Ubuntu上可以通过以下命令安装:

sudo apt update
sudo apt install nginx
启动NGINX

安装完成后,可以使用以下命令启动NGINX服务:

sudo systemctl start nginx
停止NGINX

如果需要停止NGINX服务,可以使用:

sudo systemctl stop nginx
配置文件位置

NGINX的主配置文件通常位于 /etc/nginx/nginx.conf,而站点配置文件通常位于 /etc/nginx/sites-available/ 目录下。

2. 创建简单的HTTP服务器

创建一个简单的静态网站

假设你有一个简单的静态HTML页面,可以将其放在NGINX的默认网站目录 /var/www/html/ 下,然后通过浏览器访问该页面。以下是一个简单的示例:

/var/www/html/index.html 中创建一个文件:

<!DOCTYPE html>
<html>
<head>
    <title>欢迎使用NGINX</title>
</head>
<body>
    <h1>Hello, NGINX!</h1>
    <p>这是一个简单的NGINX服务器示例。</p>
</body>
</html>
配置NGINX以提供该静态网站

编辑NGINX的默认站点配置文件 /etc/nginx/sites-available/default,添加一个 server 块来指定NGINX如何处理请求:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.html;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }
}

这个配置中:

  • listen 指定NGINX监听的端口(80端口是HTTP的默认端口)。
  • root 指定NGINX寻找文件的根目录。
  • index 指定默认的首页文件。
  • server_name 设置为 _ 表示匹配任何请求的主机名。
  • location / 定义了处理请求的位置。try_files 指令尝试寻找匹配的文件,如果找不到则返回404错误。

3. 使用NGINX作为反向代理

NGINX可以作为反向代理,将请求转发到不同的服务器上。

配置NGINX作为反向代理

假设你有一个Node.js应用运行在本地的3000端口上,可以通过NGINX将请求代理到该应用。

编辑NGINX的配置文件 /etc/nginx/sites-available/default

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

在这个配置中:

  • server_name 指定NGINX监听的域名。
  • location / 定义了反向代理的位置。
  • proxy_pass 将请求代理到指定的后端服务器。
  • 其他 proxy_set_header 指令用于设置HTTP头部以确保反向代理正常工作。

4. 配置HTTPS

在生产环境中,通常需要配置HTTPS以提供安全的通信。

配置NGINX支持HTTPS

首先,你需要获取SSL证书(通常是通过Let’s Encrypt免费证书服务获取),然后配置NGINX以支持HTTPS。

编辑NGINX的配置文件 /etc/nginx/sites-available/default

server {
    listen 80;
    listen [::]:80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example.com;

    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

这个配置中:

  • 第一个 server 块将所有HTTP请求重定向到HTTPS。
  • 第二个 server 块监听443端口(HTTPS默认端口)并配置SSL证书和私钥。
  • proxy_pass 和其他代理设置保持不变,但现在在加密的通信通道上进行。

标签:http,入门,nginx,实践,server,NGINX,proxy,listen
From: https://blog.csdn.net/lw_jack/article/details/139703765

相关文章

  • elasticsearch的入门与实践
    Elasticsearch是一个基于Lucene构建的开源搜索引擎。它提供了一个分布式、多租户能力的全文搜索引擎,具有HTTPweb接口和无模式的JSON文档。以下是Elasticsearch的入门与实践的基本步骤:入门安装Elasticsearch:从Elasticsearch官网下载对应版本的Elasticsearch。根据操作系......
  • Redis实战指南:基础知识、实战技巧、应用场景及最佳实践全攻略
    背景在Java系统实现过程中,我们不可避免地会借助大量开源功能组件。然而,这些组件往往功能丰富且体系庞大,官方文档常常详尽至数百页。而在实际项目中,我们可能仅需使用其中的一小部分功能,这就造成了一个挑战:如何在有限的时间和精力下,高效地掌握并使用这些组件的核心功能,以实现......
  • python爬虫入门
    注:本篇需要python基础Python爬虫。相信大家对爬虫这个词都不陌生,那么什么是爬虫呢?简单来说,爬虫就是一只在网上爬行的虫子,它会根据我们设定的规则,自动地获取我们感兴趣的信息。而Python爬虫就是使用Python语言来编写这个虫子的程序。一、准备工作在开始编写Python爬虫之前,我们需......
  • Vue微前端架构与Qiankun实践理论指南
    title:Vue微前端架构与Qiankun实践理论指南date:2024/6/15updated:2024/6/15author:cmdragonexcerpt:这篇文章介绍了微前端架构概念,聚焦于如何在Vue.js项目中应用Qiankun框架实现模块化和组件化,以达到高效开发和维护的目的。讨论了Qiankun的原理、如何设置主应用与子......
  • 【C#入门超简单】基本的.NET框架概念
    一、基本的.NET框架概念.NET框架是一个由微软开发的软件开发平台,它提供了一个运行时环境(CLR-CommonLanguageRuntime)和一套丰富的类库(FCL-FrameworkClassLibrary)。CLR负责管理代码的执行,而FCL则提供了大量预先编写好的代码,供开发者使用。例子:想象一下.NET框架是一个大型......
  • Vuex入门
    Vuex是什么?        Vuex是一个专为Vue.js应用程序开发的状态管理模式+库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。    可能有人不太理解这里的状态是什么,所谓“状态”,我们可以理解为数据,就是组......
  • MySQL入门学习-子查询.ANY
        在MySQL数据库中,子查询是指一条查询语句嵌套在另一条查询语句中,可以用来实现复杂的查询逻辑。子查询通常在WHERE子句中使用,用于过滤或比较查询结果。    子查询ANY是指返回子查询结果集中的任意一个值,与其他子查询类型相比,子查询ANY的特点是返回值......
  • 如何入门Python爬虫,这就是答案!
    “入门”是良好的动机,但是可能作用缓慢。如果你手里或者脑子里有一个项目,那么实践起来你会被目标驱动,而不会像学习模块一样慢慢学习。另外如果说知识体系里的每一个知识点是图里的点,依赖关系是边的话,那么这个图一定不是一个有向无环图。因为学习A的经验可以帮助你学习B。因此,......
  • 生产环境Nginx服务器双机热备部署以及配置内网域名转发
    10.0.0.8和10.0.0.9部署nginx:第一步:上传安装包第二步:安装编译依赖(使用普通用户需要家sudo)yuminstallgccgcc-c++yuminstallzlibzlib-develyuminstallpcrepcre-develyuminstallopenssllibssl-dev第三步:解压,编译安装:解压命令:sudotar-zxvfnginx-1.24.0.tar.g......
  • AI大佬吴恩达+OpenAI团队编写:面向大模型入门者的 LLM CookBook 汉化版
    粉丝们久等了!!!我又来更LLM大模型的必备读物啦!这次给大家推荐的是AI圈无人不知的吴恩达大佬+OpenAI团队一起编写的大模型入门文档,也就是这本:大型语言模型(LLM)的权威文档<面向开发者的LLM入门PDF>在Github上已经高达56.8kstar了,这含金量啧啧啧朋友们如果有需要这份《LLMC......