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,以及前端优化了。