Ubuntu 20.04 下使用 nginx 配置网站

安装 nginx

  • 如果服务器上还没有安装 nginx 服务, 可以执行如下命令安装
1
2
3
sudo apt update
sudo apt install nginx
sudo service nginx start

静态站点

这里以站点 www.test.cn 为例讲解

  • 首先将静态站点的文件放置在/var/www/test目录下

  • 其次将该站点的ssl证书放置在/etc/nginx/ssl/www.test.cn目录下

  • /etc/nginx/sites-available目录下新建站点配置文件 www.test.cn

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    server {
    listen 80;
    listen [::]:80;

    server_name www.test.cn;

    rewrite ^(.*)$ https://${server_name}$1 permanent;
    }


    server {
    # SSL 访问端口号为 443
    listen 443 ssl;
    # 填写绑定证书的域名
    server_name www.test.cn;
    # 证书文件名称
    ssl_certificate /etc/nginx/ssl/www.test.cn/www.test.cn_bundle.crt;
    # 私钥文件名称
    ssl_certificate_key /etc/nginx/ssl/www.test.cn/www.test.cn.key;
    ssl_session_timeout 5m;
    # 请按照以下协议配置
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    # 请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    root /var/www/test;

    index index.html;

    location / {
    try_files $uri $uri/ =404;
    }
    }
  • 建立软连接启用站点

    1
    sudo ln -s /etc/nginx/sites-available/www.test.cn /etc/nginx/sites-enabled/www.test.cn
  • 重启nginx使配置生效

    1
    sudo service nginx restart

动态站点

  • 运行站点程序,获得端口号

  • 配置文件 www.test.cn 按以下格式配置,其他步骤同静态站点即可

    这里是将 www.test.cn 的请求转发到 3000 端口服务上,如你的服务端口不同, 改变该配置中的的端口号即可

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    server {
    listen 80;
    listen [::]:80;

    server_name www.test.cn;

    rewrite ^(.*)$ https://${server_name}$1 permanent;
    }


    server {
    # SSL 访问端口号为 443
    listen 443 ssl;
    # 填写绑定证书的域名
    server_name www.test.cn;
    # 证书文件名称
    ssl_certificate /etc/nginx/ssl/www.test.cn/www.test.cn_bundle.crt;
    # 私钥文件名称
    ssl_certificate_key /etc/nginx/ssl/www.test.cn/www.test.cn.key;
    ssl_session_timeout 5m;
    # 请按照以下协议配置
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    # 请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

    location / {
    proxy_pass http://localhost:3000/; #转发目的(结尾带/ 则不将/baidu/ 放到转发的url中)
    proxy_connect_timeout 5s; #超时时间
    proxy_set_header Host "localhost:3000";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # access_log logs/access-baidu.log main; # 转发日志输出
    }
    }