nginx从安装到配置详细说明安装 在 Ubuntu/Debian 上通过以下命令安装 nginx: sudo apt-get updatesudo apt-get install nginx 在 CentOS/Fedora 上通过以下命令安装 nginx: sudo yum install nginx 安全配置 当我们
在 Ubuntu/Debian 上通过以下命令安装 nginx:
sudo apt-get update
sudo apt-get install nginx
在 CentOS/Fedora 上通过以下命令安装 nginx:
sudo yum install nginx
安全配置
当我们在互联网上使用 nginx 的时候,安全配置非常重要。以下是一些常见的安全配置:
隐藏版本号nginx 默认的 http 头中会包含版本号,攻击者可以利用这个版本号来尝试攻击 nginx。因此,我们可以在 nginx 的配置文件中通过以下指令来隐藏版本号:
server_tokens off;
限制请求速率
攻击者可以通过发送大量的请求来拒绝服务,我们可以通过限制每个 IP 的请求速率来阻止这种攻击。下面是一个例子,我们每秒钟只允许访问 100 个请求:
limit_req_zone $binary_remote_addr zone=one:10m rate=100r/s;
server {
location / {
limit_req zone=one burst=10;
}
}
去除不必要的模块
所有的模块都需要内存和 CPU 来运行,因此我们可以通过去除不必要的模块来提高 nginx 的性能。
自由互联热门推荐:PDF电子发票识别软件,一键识别电子发票并导入到Excel中!10大顶级数据挖掘软件!人工智能的十大作用! 防盗链防盗链是指限制只有特定的网站才能加载您的资源,这对于一些会员网站来说很重要,因为他们希望只有付费的用户才能使用他们的资源。以下是一个例子,限制只有指定的域名才能访问我们的资源:
location ~* \.(gif|jpg|jpeg|png)$ {
valid_referers none blocked server_names *.example.com;
if ($invalid_referer) {
return 403;
}
}
动静分离
我们可以将静态资源和动态资源分开处理,以提高网站的性能。以下是一个例子:
location /static {
alias /var/www/static;
}
location / {
proxy_pass http://localhost:8000;
}
其中 /static 目录指向静态资源的路径,/ 目录是动态资源的路径。在这个例子中,静态资源将被直接访问,而动态资源将通过代理服务器访问。
配置 HTTPS配置 HTTPS 需要 SSL 证书,可以通过以下步骤获取:
- 在 https://letsencrypt.org/ 上注册并获取 SSL 证书
- 安装 Certbot 工具
- 使用 Certbot 工具生成 SSL 证书
以下是一个示例 HTTPS 配置:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_pass http://localhost:8000;
}
}
性能优化
以下是一些常用的性能优化指令:
尽可能禁用访问日志日志文件非常大,因此您可以考虑禁用访问日志或者使用代理服务器将日志文件转移到其他位置。
access_log off;
使用 Gzip 压缩
使用 Gzip 压缩可以减少网络带宽和传输时间。
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
启用缓存
启用缓存可以减少对后端服务器的请求,从而提高网站的性能。
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mycache:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_valid 200 60m;
proxy_cache_bypass $http_pragma;
proxy_cache_revalidate on;