Nginx使用指南
一、Nginx的概念和作用
Nginx是一款轻量级的高性能Web服务器,也可以作为反向代理服务器、负载均衡服务器,在Web项目部署中扮演着重要的角色。 作为Web服务器,Nginx的主要作用是接收并响应HTTP或HTTPS请求,将相应的HTML、CSS、JavaScript等文件返回到浏览器端。在反向代理和负载均衡中,Nginx可以将请求转发给后端服务器进行处理,提高系统的可用性和性能。 以下是一个Nginx配置文件的示例:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 1024;
multi_accept on;
}
http {
server {
listen 80;
server_name example.com;
location / {
root /usr/share/nginx/html;
index index.html;
}
location /api/ {
proxy_pass http://localhost:3000/;
}
}
}
二、安装和配置Nginx
在Ubuntu服务器上安装Nginx的命令为:
sudo apt-get update
sudo apt-get install nginx
安装完成后,在默认配置文件/etc/nginx/nginx.conf
中,可以对Nginx进行个性化配置。一般采用修改配置文件的方式进行配置。
下面是一个基本的Nginx配置文件示例:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
三、虚拟主机和域名配置
在Nginx中,可以通过配置虚拟主机来支持多个域名的访问。例如,在配置文件中新增一个server块,并设置server_name为域名,就可以实现对该域名的支持。 下面是一个简单的虚拟主机和域名配置示例:
server {
listen 80;
server_name example.com;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
其中,listen指定监听的端口,server_name指定域名,location指定访问根目录时所返回的文件。
四、HTTPS和SSL证书配置
HTTPS是HTTP的安全版,可以确保数据在传输过程中的安全性和完整性,常用于金融、电商等场景,因此在Web项目部署中,也需要对其进行支持。 为了实现HTTPS,需要在Nginx中配置SSL证书。下面是一个配置SSL证书的示例:
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/example.crt;
ssl_certificate_key /etc/nginx/ssl/example.key;
server_name example.com;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
其中,listen指定监听的端口,ssl_certificate和ssl_certificate_key分别指定SSL证书和私钥的位置,server_name指定域名。
五、反向代理和负载均衡配置
在处理大量请求时,单个应用服务器可能会出现瓶颈,因此需要采用反向代理和负载均衡的方式,将请求分摊到多个应用服务器上,提高系统的可用性和性能。
Nginx通过ngx_http_upstream_module
模块实现反向代理和负载均衡。下面是一个反向代理和负载均衡配置的示例:
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend/;
}
}
其中,upstream指定后端服务器的地址,server指定服务器的地址和端口,proxy_pass指定反向代理的路径。
六、缓存配置
在Web应用中,缓存可以大大提高用户的访问速度和系统的性能。Nginx自带缓存功能,可以设置缓存时间和缓存大小。 下面是一个缓存配置的示例:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;
server {
listen 80;
server_name example.com;
location / {
proxy_cache my_cache;
proxy_cache_valid 200 1m;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_pass http://backend/;
}
}
其中,proxy_cache_path指定缓存路径和大小,proxy_cache_valid指定缓存时间,proxy_cache_key指定缓存的键名。