当前位置:首页 » 《休闲阅读》 » 正文

【Web】Nginx:静态网站部署

18 人参与  2024年10月08日 18:40  分类 : 《休闲阅读》  评论

点击全文阅读


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

安装Nginx

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

#本文操作环境为Ubuntusudo apt updatesudo apt upgrade

使用以下命令安装Nginx:

sudo apt install nginx

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

sudo systemctl start nginxsudo 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管理服务:

# 启动Nginxsudo systemctl start nginx# 停止Nginxsudo systemctl stop nginx# 重启Nginxsudo systemctl restart nginx# 重新加载配置文件sudo systemctl reload nginx

创建网站目录和页面

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

sudo mkdir -p /var/www/my_websitesudo mkdir -p /var/www/my_website/aboutsudo 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://zhangshiyu.com/post/169186.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1