Nginx配置指南
Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
安装
通过包管理器安装
(debain/ubuntu) sudo apt-get install nginx
编译安装
有人写了一键安装脚本,安装时间稍微长一些,如果没有特殊需求的话,一般使用包管理器提供的版本,尽管不是最新,但一般情况下很稳定。
https://lnmp.org/auto.html
基础配置
示例版本:nginx/1.14.2
重启Nginx:(debain/ubuntu) sudo servcie nginx restart
基础网站配置
所有的网站配置都在/etc/nginx/sites-available/(通过包管理器安装的,如果编译安装,请查看编译配置)
中,默认有一个default
配置
我们把注释删减下,得到如下的配置:
server {
#监听端口 ipv4&ipv6
listen 80;
listen [::]:80;
#网站根目录
root /var/www/html;
#主页
index index.html index.htm index.nginx-debian.html;
#服务器名称,如果有多个站点,这里填写你的域名
server_name _;
#路径配置块
location / {
#404配置,寻找文件,先寻找文件后寻找目录
try_files $uri $uri/ =404;
}
}
PHP配置
做站怎么能没有PHP,在配置中添加:
location ~ \.php$ {
#注意你的PHP版本,这里配置的是php7.3-fpm
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}
编译安装的这里会报错,因为你没有snippets/fastcgi-php.conf
这个配置文件(这个配置中又引用了其他配置,记得全部拷贝回来), 你可以在编译前从包管理器的版本中拷贝一份,记得删除包管理器版本。
安全配置
现在的站点基本配有SSL,我们也要想办法装上一个
获取证书
你可以在这搞一张证书:https://freessl.cn/
当然也可以买一张便宜的证书,一般是Sectigo(Comodo),的比较便宜,一年5刀
SSL配置
在1.11.0之后的版本中,支持RSA与ECC双证书,填写两张证书路径,配置优先ECC算法即可。
#将你的监听端口改为:
listen 443 ssl;
listen [::]:443 ssl;
#在老版本中,启用ssl的配置为:
#ssl on;
#而不是在监听端口后加ssl
#证书/私钥配置(目录为你的证书存放目录)
ssl_certificate /etc/nginx/ssl_cert/main.crt;
ssl_certificate_key /etc/nginx/ssl_cert/main.key;
#其他ssl配置
ssl_session_timeout 5m; #会话过期时间
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #支持握手协议(通常使用TLSv1.2)
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #优先选择算法
ssl_prefer_server_ciphers on; #启用服务器偏好配置
跳转设置
将http访问全部变为https访问:
#在上一个server{...}后新建:
server {
listen 80;
server_name yourdomain;
rewrite ^(.*) https://$server_name$1 permanent;
}
关闭服务器token
Nginx会在响应头标识服务器版本,我们要关掉它(在/etc/nginx/nginx.conf(通过包管理器安装的,如果编译安装,请查看编译配置)
中):
#http段中
server_tokens off;
禁止访问
#禁止访问passwd路径(路径支持正则)下的所有文件
location /passwd {
deny all;
}
优化配置
gzip压缩
使用gzip压缩来减少传输时间,将/etc/nginx/nginx.conf(通过包管理器安装的,如果编译安装,请查看编译配置)
中关于gzip配置注 释删除即可。
gzip_vary on; #启用压缩标识
gzip_proxied any; #反向代理时,无条件启用压缩
gzip_comp_level 6; #压缩等级
gzip_buffers 16 8k; #缓存空间大小
gzip_http_version 1.1; #版本
gzip_types text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; #启用压缩的文件类型
使用优化模型
#配置头直接填写
worker_processes auto; #自动配置工作进程数量
#worker_cpu_affinity 01 10 01 10; #不同进程绑定不同逻辑cpu(四进程双核示例)
worker_rlimit_nofile 65535; #Nginx能打开最大的文件描述符(Linux好像为65535)
#events段中
use epoll; #使用epoll轮询处理
# kqueue | rtsig | epoll | /dev/poll | select | poll (Nginx支持的事件模型)
worker_connections 1024; 每个进程最大的连接数
其它应用
反向代理
浏览目录(文件服务器)
后续
现在你可以开始关心网站的SEO,以及前端优化了。