【Web】Nginx:静态网站部署
T0uken 2024-08-24 10:03:01 阅读 95
Nginx 是一个HTTP和反向代理服务器,邮件代理服务器,以及一个通用的TCP/UDP代理服务器,最初由Igor Sysoev编写。很长一段时间以来,它一直在许多负载较重的俄罗斯网站上运行,包括Yandex、Mail.Ru、VK和Rambler。根据Netcraft的数据,在2024年5月,nginx为或代理了20.42% 最繁忙的站点。以下是一些成功案例:Dropbox、Netflix、FastMail.FM
安装Nginx
首先,确保系统包是最新的:
<code>#本文操作环境为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>code>
<a href="/contact/">Contact</a>code>
</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>code>
<a href="/contact/">Contact</a>code>
</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>code>
<a href="/about/">About</a>code>
</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-available
和 sites-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;
# }
# }
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。