简单使用
安装Nginx后,可以通过以下步骤使用Nginx服务:
1.启动Nginx: 可以使用以下命令启动Nginx服务:
sudo systemctl start nginx
或者
sudo service nginx start
2.验证Nginx是否正常运行:
sudo systemctl status nginx
3. 配置Nginx配置文件:只要是在 /etc/nginx/nginx.conf该文件下。具体配置方法见下文。
4.重新加载Nginx配置:在修改了Nginx配置文件后,需要重新加载配置以使更改生效。可以使用以下命令重新加载Nginx配置:
sudo systemctl reload nginx
5.停止Nginx:可以使用以下命令停止Nginx服务:
sudo systemctl stop nginx
或者
sudo service nginx stop
需要注意的是,在使用Nginx时,可能需要在防火墙中打开相应的端口(例如80端口),以允许外部访问。另外,如果出现问题,可以查看Nginx日志文件/var/log/nginx/error.log以获取更多信息。
ngnix实现web服务器
Nginx在构建Web服务器时扮演了以下几个重要角色:
- 静态文件服务器
- 高效地提供静态文件(HTML、CSS、JavaScript、图片等)
- HTTP服务器
- 处理HTTP请求,提供静态文件服务
- 支持多种HTTP协议版本(HTTP/1.0, HTTP/1.1, HTTP/2)
- SSL/TLS终端
- 处理HTTPS连接,卸载SSL/TLS加密解密工作
- 缓存服务器
- 缓存静态内容和动态内容,减轻后端服务器压力
- 提高响应速度
- 安全防护
- 提供访问控制、限流等安全功能
- 可以配置为Web应用防火墙(WAF)
- 反向代理服务器
- 将客户端请求转发到后端应用服务器
- 实现负载均衡,分发流量到多个后端服务器
- 负载均衡器
- 在多个后端服务器之间分配请求
- 支持多种负载均衡算法
静态文件服务
Nginx配置静态文件服务的主要步骤如下:
- 在nginx.conf的http块内添加server块:
server {
listen 80;
server_name example.com;
root /var/www/html/site;
# 其他配置...
}
- 在server块内添加location块,指定静态文件目录:
location / {
root /path/to/your/files;
index index.html index.htm;
}
- root指令指定静态文件的根目录。
- index指令指定默认索引文件。
- 可以添加其他配置,如:
location /images/ {
root /var/www/images;
autoindex on;
}
location /images/
: 匹配所有以/images/
开头的 URL 请求。root /var/www/images;
: 设置文件系统的根目录。对于/images/
的请求,Nginx 会在/var/www/images
目录中查找文件。autoindex on;
: 启用目录列表。如果请求的是一个目录而不是具体文件,Nginx 会显示该目录的内容列表。
location ~ \.(gif|jpg|png)$ {
root /var/www/images;
expires 30d;
}
location ~ \.(gif|jpg|png)$
: 使用正则表达式匹配所有以 .gif、.jpg 或 .png 结尾的 URL。root /var/www/images;
: 同样设置文件系统的根目录。expires 30d;
: 设置 HTTP 响应的 Expires 和 Cache-Control 头,告诉客户端可以缓存这些文件 30 天。
实际效果:
- 如果请求
http://yourdomain.com/images/
,Nginx 会显示/var/www/images
目录的内容列表。 - 如果请求
http://yourdomain.com/images/pic.jpg
,Nginx 会从/var/www/images/pic.jpg
提供文件,并设置 30 天的缓存。 - 对于 .gif、.jpg、.png 文件的请求,无论它们在哪个路径下,都会应用 30 天的缓存策略。
安全配置服务
比如SSL/TLS加密:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/certificate.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
}
certificate.crt,certificate.key可以通过商业证书颁发机构(CA)购买,通过云服务提供商获取,如果只是用于内部测试环境,可以使用OpenSSL等工具生成自签名证书。
再比如强制HTTPS:
在HTTP server块中添加重定向:
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
其中return 301 https://$server_name$request_uri:
return 301
指令用于发出HTTP 301永久重定向。https://$server_name$request_uri
构建重定向的目标URL:
https://
指定目标协议为HTTPS。$server_name
是一个Nginx变量,代表当前请求的服务器名称(即example.com
)。$request_uri
是另一个Nginx变量,代表请求的完整URI,包括路径和查询字符串。