【Web】Nginx:静态网站部署

news2024/10/5 12:50:45

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.coloradmin.cn/o/1900855.html

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

相关文章

奥威BI方案:多行业、多场景,只打高端局

奥威BI方案&#xff0c;确实以其卓越的性能和广泛的应用领域&#xff0c;在高端数据分析市场中占据了一席之地。以下是对奥威BI方案的详细解析。 奥威BI方案是一款针对多行业、多场景的全面数据分析解决方案&#xff0c;它结合了大数据、云计算等先进技术&#xff0c;为企业提…

2024年地理信息技术与应用技能大赛·决赛(2024年地理信息技术与应用能力水平考试·中级)

目录 1 请将所有数据的空间参考统一。&#xff08;2分&#xff09; 1.1 题目要求 1.2 详细解析 2 制作台风轨迹图。&#xff08;10分&#xff09; 2.1 题目要求 2.2 详细解析 3 分析台风影响城市&#xff0c;并将结果以独立专题图的形式展示。&#xff08;13分&#xff…

固态继电器的未来浅析

固态继电器(SSR)已成为传统机电继电器的可靠替代品&#xff0c;具有开关速度更快、使用寿命更长、电磁干扰更少等诸多优势。随着技术的不断进步&#xff0c;SSR的未来有望在设计和应用的各个方面实现更显著的改进和创新。 1.小型化和集成化&#xff1a; 固态继电器开发的主要趋…

django高校教务系统-计算机毕业设计源码81661

目 录 摘要 1 绪论 1.1 研究背景 1.2目的及意义 1.3论文结构与章节安排 2 高校教务系统设计分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4…

Windows 玩转大模型第一天:大模型本地部署,调用大模型API可直接工程化应用(全部代码和详细部署流程)

Ollama 是一个开源框架&#xff0c;专为在本地机器上便捷部署和运行大型语言模型&#xff08;LLM&#xff09;而设计。 以下是其主要特点和功能概述&#xff1a; 1. 简化部署&#xff1a;Ollama 目标在于简化在 Docker 容器中部署大型语言模型的过程&#xff0c;使得非专业用…

全能PDF工具集 -- PDF Shaper Professional v14.3 特别版

软件简介 PDF Shaper是一款功能强大的PDF工具集&#xff0c;它提供了一系列用于处理PDF文档的工具。这款软件使用户能够轻松地转换、分割、合并、提取页面以及旋转和加密PDF文件。PDF Shaper的界面简洁直观&#xff0c;使得即使是新手用户也能快速上手。它支持广泛的功能&…

Stream练习

运用点&#xff1a; 流内数据类型转换(map)、filter、limit、skip、concat(让两个流合并) 题目&#xff1a; 操作1、2&#xff1a; ArrayList<String> manList new ArrayList<>();ArrayList<String> womanList new ArrayList<>();Collections.addAl…

新产品或敏捷项目过程 SOP,附带流程图及流程规范

一、项目启动 项目背景和目标明确 市场调研结果分析&#xff0c;确定新产品的需求和市场机会。制定明确的项目目标&#xff0c;包括产品特性、上市时间、预期收益等。 组建项目团队 确定项目经理、产品经理、开发人员、测试人员、市场人员等角色。明确各成员的职责和权限。 项目…

STL--求交集,并集,差集(set_intersection,set_union,set_difference)

set_intersection(重要) 求两个有序的序列的交集. 函数声明如下: template<class InputIterator1, class InputIterator2, class OutputIterator>OutputIterator set_intersection(InputIterator1 _First1, //容器1开头InputIterator1 _Last1, //容器2结尾(不包含)Inp…

阿里云OSS文件上传不配置环境变量使用显式AccessKey验证

问题背景 在中阿里云官方文档中介绍文件上传时&#xff0c;推荐配置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。这里用简单的方法&#xff0c;直接在Demo.java中显式指定accessKeyId和accessKeySecret&#xff0c;同时修改OSSClientBuilder()的入参。 解决方法 首先…

秒杀圣经:10Wqps高并发秒杀,16大架构杀招,帮你秒变架构师

高并发下&#xff0c;如何设计秒杀系统&#xff1f;这是一个高频面试题。 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、shein 希音、shopee、百度、网易的面试资格&#xff0c;遇到很多很重要的面试题…

如何选择TikTok菲律宾直播网络?

为了满足用户对于实时互动的需求&#xff0c;TikTok推出了直播功能&#xff0c;让用户能够与粉丝即时交流。本文将探讨如何选择适合的TikTok菲律宾直播网络&#xff0c;并分析OgLive是否是值得信赖的选择。 TikTok菲律宾直播网络面临的挑战 作为全球领先的短视频平台&#xff…

Redis 中 Set 和 Zset 类型

目录 1.Set类型 1.1 Set集合 1.2 普通命令 1.3 集合操作 1.4 内部编码 1.5 使用场景 2.Zset类型 2.1 Zset有序集合 2.2 普通命令 2.3 集合间操作 2.4 内部编码 2.5 使用场景 1.Set类型 1.1 Set集合 集合类型也是保存多个字符串类型的元素&#xff0c;但是和列表类型不同的是&…

【Android】自定义换肤框架01之皮肤包制作

前言 目前为止&#xff0c;市面上主流的安卓换肤方案&#xff0c;其实原理都是差不多的 虽然大多都号称一行代码集成&#xff0c;但其实想要做到完全适配&#xff0c;并不简单 这个系列&#xff0c;就是让大家从零开始&#xff0c;完全掌握这方面知识&#xff0c;这样才能对…

理解MySQL核心技术:存储过程与函数的强大功能

在大型应用程序和复杂的数据库操作中&#xff0c;存储过程与函数扮演着至关重要的角色。它们不仅可以提高代码的可维护性&#xff0c;还能加强数据库的安全性和性能。本篇文章将深入探讨MySQL存储过程与函数的基础知识、创建、管理及其在实际应用中的优势。 什么是存储过程和函…

数据结构+算法-实现一个计算器

在学习栈的数据结构的时候讲到可以用栈来实现一个计算器的功能&#xff0c;那么这个功能是如何实现的呢&#xff1f; 采用栈模拟得方式来实现一个计算器 要实现如下的功能: 字符串如何转为整数 2.处理加减法 如何处理加减法呢&#xff1f; 5-128 给第一个数字前面放一个号…

Java基础-接口与实现

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 Java 接口 什么是接口&#xff1f; 声明接口 实现接口 继承接口 接口的多继承 标记接口 Java 接口 …

代理模式的实现

1. 引言 1.1 背景 代理模式&#xff08;Proxy Pattern&#xff09;是一种常用的设计模式&#xff0c;它允许通过一个代理对象来控制对另一个对象的访问。在面向对象编程的框架中&#xff0c;代理模式被广泛应用&#xff0c;尤其在Spring框架的AOP&#xff08;面向切面编程&am…

优雅谈大模型:揭开计算机视觉任务神秘面纱

人工智能在第四次工业革命发挥着至关重要的作用&#xff0c;它广泛的融入日常生活&#xff0c;例如Google助手、Siri、智能手机摄像头、社交媒体过滤器、自动标记、医疗成像、导航等&#xff0c;所有这些技术都切实的改进和增强日常活动的便利性和习惯。 大模型技术发展到现在…

基于Java技术的篮球论坛系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言 Java 数据库 MySQL 技术 B/S模式、Java技术 工具 Visual Studio、MySQL数据库开发工具 系统展示 首页 用户注册界面 篮球论坛界面 个人中心界面 摘要 本…