【Web】Nginx:静态网站部署

Nginx 是一个HTTP和反向代理服务器,邮件代理服务器,以及一个通用的TCP/UDP代理服务器,最初由Igor Sysoev编写。很长一段时间以来,它一直在许多负载较重的俄罗斯网站上运行,包括Yandex、Mail.Ru、VK和Rambler。根据Netcraft的数据,在2024年5月,nginx为或代理了20.42% 最繁忙的站点。以下是一些成功案例:Dropbox、Netflix、FastMail.FM

安装Nginx

首先,确保系统包是最新的:

#本文操作环境为Ubuntu
sudo apt update
sudo apt upgrade

使用以下命令安装Nginx:

sudo apt install nginx

安装完成后,启动Nginx并使其开机自动启动:

sudo systemctl start nginx
sudo systemctl enable nginx
# 禁止自启动:sudo systemctl disable nginx

查看端口占用情况:

netstat -lntup  # 可以看到nginx默认占用了80端口

Nginx常用命令

启动Nginx:

进入Nginx的安装目录,并使用 ./nginx 启动Nginx:

cd /usr/local/nginx/sbin/
./nginx

停止Nginx:

使用 -s stop 参数立即停止Nginx:

./nginx -s stop

安全退出Nginx:

使用 -s quit 参数安全退出Nginx,等待所有工作进程处理完当前请求后再退出:

./nginx -s quit

重新加载配置文件:

使用 -s reload 参数重新加载Nginx配置文件而无需停止服务:

./nginx -s reload

查看Nginx进程:

使用 ps 命令查看Nginx进程:

ps aux | grep nginx

配置文件语法检查:

在应用新的配置文件之前,使用以下命令测试配置文件的语法:

./nginx -t

查看Nginx版本:

查看Nginx的版本信息和编译配置:

./nginx -v

检查Nginx的当前状态:

检查Nginx的当前状态和活动状态:

sudo systemctl status nginx

启动、停止和重启Nginx(使用systemd):

如果Nginx是通过包管理器(如apt或yum)安装的,可以使用systemd管理服务:

# 启动Nginx
sudo systemctl start nginx

# 停止Nginx
sudo systemctl stop nginx

# 重启Nginx
sudo systemctl restart nginx

# 重新加载配置文件
sudo systemctl reload nginx

创建网站目录和页面

首先,创建目录结构来存放你的网站文件:

sudo mkdir -p /var/www/my_website
sudo mkdir -p /var/www/my_website/about
sudo mkdir -p /var/www/my_website/contact

然后创建首页、关于页面和联系页面的HTML文件:

sudo vi /var/www/my_website/index.html
<!DOCTYPE html>
<html>
<head>
    <title>My Personal Website</title>
</head>
<body>
    <h1>Welcome to My Personal Website</h1>
    <p>This is the home page.</p>
    <nav>
        <a href="/about/">About</a>
        <a href="/contact/">Contact</a>
    </nav>
</body>
</html>
sudo vi /var/www/my_website/about/index.html
<!DOCTYPE html>
<html>
<head>
    <title>About - My Personal Website</title>
</head>
<body>
    <h1>About Me</h1>
    <p>This is the about page.</p>
    <nav>
        <a href="/">Home</a>
        <a href="/contact/">Contact</a>
    </nav>
</body>
</html>
sudo vi /var/www/my_website/contact/index.html
<!DOCTYPE html>
<html>
<head>
    <title>Contact - My Personal Website</title>
</head>
<body>
    <h1>Contact Me</h1>
    <p>This is the contact page.</p>
    <nav>
        <a href="/">Home</a>
        <a href="/about/">About</a>
    </nav>
</body>
</html>

配置Nginx

创建一个新的Nginx服务器块配置文件来配置你的网站:

Nginx服务器块(Server Block)用于定义一个虚拟主机的配置,每个服务器块可以配置不同的域名、端口、根目录等。服务器块在Nginx配置文件中用 server 指令来定义。

sudo vi /etc/nginx/sites-available/my_website

在该文件中添加以下内容:

server {
    # 监听端口,通常是80(HTTP)或443(HTTPS)。这里指定服务器监听80端口,用于处理HTTP请求。
    listen 80;  
    
    # 定义服务器的域名。当请求的域名与此匹配时,将使用这个服务器块处理请求。
    server_name my_website.com www.my_website.com;
    
    # 指定网站的根目录,所有相对路径的文件请求都将从这个目录开始查找。
    root /var/www/my_website;
    
    # 定义默认的首页文件名。当用户请求根目录时,如果该文件存在,将返回该文件。
    index index.html;

    location / {# 尝试按照顺序查找文件:首先是请求的URI,如果不存在,则尝试添加斜杠查找目录,如果仍不存在,则返回404错误。
        try_files $uri $uri/ =404;
    }
}

启用配置并加载Nginx

Nginx使用 sites-availablesites-enabled 目录来管理和组织虚拟主机配置文件:

  • /etc/nginx/sites-available/:存放所有可用的站点配置文件。这些配置文件可以被启用或禁用。
  • /etc/nginx/sites-enabled/:存放已启用站点配置文件的符号链接。Nginx在启动时会读取并加载这个目录下的配置文件。

查看目前的的符号链接:

sudo ls /etc/nginx/sites-enabled/

存在名为 default 的符号链接,删除它:

sudo rm /etc/nginx/sites-enabled/default

通过创建一个符号链接将配置文件链接到 sites-enabled 目录中:

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

在重新加载Nginx之前,确保配置文件没有语法错误:

sudo nginx -t

如果测试通过,重新加载Nginx以应用新的配置:

sudo systemctl reload nginx

Nginx配置文件*

Nginx的默认配置文件(通常位于 /etc/nginx/nginx.conf)包含了基本的配置选项:

# 用户和组
user www-data;

# Nginx 进程数
worker_processes auto;

# 进程 ID 文件的位置
pid /run/nginx.pid;

# 包含模块的配置文件
include /etc/nginx/modules-enabled/*.conf;

# 事件模块配置
events {
    # 每个 worker 进程的最大连接数
    worker_connections 768;
    # multi_accept on; # 是否同时接收多个新连接
}

# HTTP 核心模块配置
http {

    ##
    # 基本设置
    ##
    
    # 使用 sendfile 来提升文件传输效率
    sendfile on;

    # 启用 TCP_NOPUSH 以优化 TCP 数据包的发送
    tcp_nopush on;

    # 设置 types 哈希表的最大尺寸
    types_hash_max_size 2048;

    # server_tokens off; # 隐藏 Nginx 版本号以提升安全性

    # server_names_hash_bucket_size 64; # 调整 server_names 哈希表桶大小
    # server_name_in_redirect off; # 禁用在重定向中使用服务器名

    # 包含 MIME 类型定义
    include /etc/nginx/mime.types;

    # 默认 MIME 类型
    default_type application/octet-stream;

    ##
    # SSL 设置
    ##
    
    # 支持的 SSL/TLS 协议
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # 禁用 SSLv3,参考 POODLE 漏洞

    # 优先使用服务器端的密码套件
    ssl_prefer_server_ciphers on;

    ##
    # 日志设置
    ##

    # 访问日志的位置
    access_log /var/log/nginx/access.log;

    # 错误日志的位置
    error_log /var/log/nginx/error.log;

    ##
    # Gzip 设置
    ##
    
    # 启用 Gzip 压缩
    gzip on;

    # gzip_vary on; # 启用响应头 `Vary: Accept-Encoding`
    # gzip_proxied any; # 启用对任何请求的压缩
    # gzip_comp_level 6; # Gzip 压缩级别
    # gzip_buffers 16 8k; # Gzip 缓冲区
    # gzip_http_version 1.1; # Gzip 最低 HTTP 版本要求
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # 需要压缩的 MIME 类型

    ##
    # 虚拟主机配置
    ##
    
    # 包含其他配置文件
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

# 邮件代理模块配置示例(默认注释掉)
# mail {
#     # 参考样例验证脚本:http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#     # 验证脚本的地址
#     # auth_http localhost/auth.php;
#
#     # POP3 协议的功能支持
#     # pop3_capabilities "TOP" "USER";
#
#     # IMAP 协议的功能支持
#     # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#     server {
#         listen     localhost:110;
#         protocol   pop3;
#         proxy      on;
#     }
#
#     server {
#         listen     localhost:143;
#         protocol   imap;
#         proxy      on;
#     }
# }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从零开始读RocketMq源码(一)生产者启动

目录 前言 获取源码 总概论 生产者实例 源码 A-01:设置生产者组名称 A-02:生产者服务启动 B-01&#xff1a;初始化状态 B-02&#xff1a;该方法再次对生产者组名称进行校验 B-03&#xff1a;判断是否为默认生产者组名称 B-04: 该方法是为了实例化MQClientInstance对…

零基础STM32单片机编程入门(八)定时器PWM输入实战含源码视频

文章目录 一.概要二.PWM输入框架图三.CubeMX配置一个PWM输入例程1.硬件准备2.创建工程3.调试 四.CubeMX工程源代码下载五.讲解视频链接地址六.小结 一.概要 脉冲宽度调制(PWM)&#xff0c;是英文“Pulse Width Modulation”的缩写&#xff0c;简称脉宽调制&#xff0c;是利用单…

转发服务器实验

首先先克隆一个虚拟机并完成ip地址的修改 nmcli connection modify ens160 ipv4.addresses 192.168.209.128/24 nmcli connection modify ens160 ipv4.method manual nmcli connection modify ens160 connection.autoconnect yes nmcli connection up ens160 nmcli connection…

计算机网络浅谈—什么是 OSI 模型?

开放系统通信&#xff08;OSI&#xff09;模型是一个代表网络通信工作方式的概念模型。 思维导图 什么是 OSI 模型&#xff1f; 开放系统互连 (OSI) 模型是由国际标准化组织创建的概念模型&#xff0c;支持各种通信系统使用标准协议进行通信。简单而言&#xff0c;OSI 为保证…

读书到底有什么意义?从笨小孩到名人的逆袭之路

点击上方△腾阳 关注 作者 l 腾阳 转载请联系授权 读书到底有什么意义&#xff1f; 有一个鸟语花香的农场里&#xff0c;住着老农夫和他的小孙子。 老农夫经常在清晨会坐在窗边&#xff0c;捧着厚厚的《圣经》&#xff0c;沉浸在知识的海洋里。 小孙子问他&#xff1a;…

【Linux】文件系统6——理解文件操作

目录 1.文件的读取 1.1.目录 1.2.文件 1.3.目录树读取 1.4.文件系统大小与磁盘读取性能 2.增添文件 2.1.数据的不一致&#xff08;Inconsistent&#xff09;状态 2.2.日志式文件系统&#xff08;Journaling filesystem&#xff09; 3.Linux文件系统的运行 4、文件的删…

Selenium的自动化测试技巧有多少?【建议收藏】

Selenium是一个用于自动化Web应用程序测试的工具。它提供了一组API&#xff0c;允许用户与Web浏览器进行交互&#xff0c;来执行各种自动化测试任务。本文将从零开始&#xff0c;详细介绍Selenium的自动化测试技巧。 第一步&#xff1a;安装Selenium 首先&#xff0c;您需要安…

【鸿蒙学习笔记】Stage模型工程目录

官方文档&#xff1a;应用配置文件概述&#xff08;Stage模型&#xff09; 目录标题 FA模型和Stage模型工程级目录模块级目录app.json5module.json5程序执行流程程序基本结构开发调试与发布流程 FA模型和Stage模型 工程级目录 模块级目录 app.json5 官方文档&#xff1a;app.j…

WAIC:生成式 AI 时代的到来,高通创新未来!

目录 01 在终端侧算力上&#xff0c;动作最快的就是高通 02 模型优化&#xff0c;完成最后一块拼图 在WAIC上&#xff0c;高通展示的生成式AI创新让我们看到了未来的曙光。 生成式 AI 的爆发带来了意想不到的产业格局变化&#xff0c;其速度之快令人惊叹。 仅在一个月前&…

android之蓝牙遥控器新增键值

文章目录 简述连接蓝牙代码流程总结简述 使用android 10平台来适配蓝牙遥控器新增的键值 连接蓝牙 当使用遥控器与蓝牙进行配对成功后,就可以通过getevent获取蓝牙打印的信息,如下所示 其中000700a0是发送过来的协议(0007)和码值(00a0)的组合。0xfa是驱动定义好的值,如果…

AI智能歌曲创作源码系统 前后端分离 带完整的安装代码包以及搭建教程

系统概述 本AI智能歌曲创作源码系统集成了深度学习、自然语言处理和音乐理论&#xff0c;旨在通过用户输入的关键词、情感色彩或音乐片段&#xff0c;自动生成具有创意且风格多样的音乐作品。系统核心由两大部分构成&#xff1a;前端用户界面与后端音乐生成引擎。前端负责接收…

什么是 VueQuill(前端的富文本编辑器)?

什么是 VueQuill&#xff1f; 1. 简介 VueQuill 是 Vue.js 的一个富文本编辑器插件&#xff0c;它基于 Quill 编辑器构建&#xff0c;提供了简洁且功能强大的富文本编辑功能。Quill 是一个现代化的富文本编辑器&#xff0c;提供丰富的文本编辑能力&#xff0c;支持多种格式和…

【学习笔记】程序设计竞赛

程序设计竞赛 文章目录 程序设计竞赛0x00 基本操作指南0x01 算法分析0x02 STL和基本数据结构栈队列集合map 0x03 排序插入排序归并排序&#xff08;Merge Sort)快速排序 0x04 搜索技术BFSDFS回溯与剪枝 深度迭代ID A*A star双向广搜 0x05 递推方程0x06 高级数据结构并查集二叉树…

【强化学习的数学原理】课程笔记--3(蒙特卡洛方法)

目录 蒙特卡洛方法MC Basic算法sparse reward MC Greedy 算法样本使用效率MC ϵ \epsilon ϵ-Greedy 算法一些例子 蒙特卡洛方法 第二节 推导贝尔曼最优公式中的&#xff1a; q π k ( s , a ) ∑ r P ( r ∣ s , a ) r γ ∑ s ′ P ( s ′ ∣ s , a ) v π k ( s ′ ) q…

CMS Made Simple v2.2.15 远程命令执行漏洞(CVE-2022-23906)

前言 CVE-2022-23906 是一个远程命令执行&#xff08;RCE&#xff09;漏洞&#xff0c;存在于 CMS Made Simple v2.2.15 中。该漏洞通过上传头像功能进行利用&#xff0c;攻击者可以上传一个经过特殊构造的图片文件来触发漏洞。 漏洞详情 CMS Made Simple v2.2.15 中的头像上…

NAS 必备导航页 Homepage 外观简约但功能丰富

本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 NAS 上的应用部署多了之后,不同的服务对应的端口很难记住,在内网中使用,一般也不会绑定域名。 此时就需要有一个导航页将 NAS 上部署的所有服务都罗列出来,方便我们直接点击访问对应的服务。 今天给大家介绍的…

电商利器——淘宝商品月销量API接口解析

在电商时代&#xff0c;数据就是金钱。对于淘宝商家而言&#xff0c;掌握商品的销量数据无异于掌握了市场的脉搏。如今&#xff0c;淘宝商品月销量API接口的出现&#xff0c;联讯数据让商家如虎添翼&#xff0c;能够更加精准地把握市场动态&#xff0c;优化商品策略。 淘宝商…

强技能 展风采 促提升——北京市大兴区餐饮行业职工技能竞赛精彩呈现

6月19日&#xff0c;由大兴区总工会、区商务局、青云店镇人民政府联合主办&#xff0c;区服务工会、区餐饮行业协会承办的“传承中国技艺&#xff0c;打造新一代餐饮工匠”2024年大兴区餐饮行业职工职业技能竞赛决赛在北京华联创新学习中心隆重开幕。区总工会副主席郝泽宏&…

力扣5----最长回文子串

给你一个字符串 s&#xff0c;找到 s 中最长的回文子串 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 解释&#xff1a;"aba" 同样是符合题意的答案。示例 2&#xff1a; 输入&#xff1a;s "cbbd" 输出…

均匀采样信号的鲁棒Savistky-Golay滤波(MATLAB)

S-G滤波器又称S-G卷积平滑器&#xff0c;它是一种特殊的低通滤波器&#xff0c;用来平滑噪声数据。该滤波器被广泛地运用于信号去噪&#xff0c;采用在时域内基于多项式最小二乘法及窗口移动实现最佳拟合的方法。与通常的滤波器要经过时域&#xff0d;频域&#xff0d;时域变换…