分类 Web 下的文章

从官方存储库安装Nginx

1.安装所需的工具

sudo apt install wget coreutils

2.下载并安装密钥文件

  • 如果不存在,请首先创建/etc/apt/keyrings,用于存储第三方密钥

    sudo mkdir -p /etc/apt/keyrings
  • 下载密钥,并保存到/etc/apt/keyrings目录

    wget -qO - https://nginx.org/packages/keys/nginx_signing.key | sudo tee /etc/apt/keyrings/nginx_signing.key

3.创建和编辑源文件

sudo nano /etc/apt/sources.list.d/nginx.sources

粘贴以下行:

Types: deb
URIs: https://nginx.org/packages/ubuntu/
Suites: jammy
Components: nginx
Architectures: amd64
Signed-By: /etc/apt/keyrings/nginx_signing.key
对于主线版本, URI请改为 https://nginx.org/packages/mainline/ubuntu/
对于其他 Ubuntu 版本,请根据cat /etc/os-release输出进行替换。
对于非 AMD/非 Intel 设备,请amd64根据dpkg --print-architecture输出进行替换。

- 阅读剩余部分 -

1、验证 Java 可用性

在安装 Tomcat 之前,您需要确保您的Ubuntu**系统上有 Java。使用以下命令检查 Java 版本:

# java -version

2、安装Java(可选)

如果未安装 Java 或者系统上有旧版本,则需要使用以下命令安装最新的 OpenJDK 版本:

# sudo apt install default-jdk

3、设置Tomcat用户

我们强烈建议避免使用 root 用户运行 Tomcat。这是一个严重的安全漏洞,可能会使您的系统遭受攻击。

相反,为 Tomcat 创建专用的用户和组:

# sudo groupadd tomcat
# sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

- 阅读剩余部分 -

利用 Let’s Encrypt 的 ACME 协议在服务器上申请、管理 SSL 证书
  1. 下载安装

    curl  https://get.acme.sh | sh
  2. 验证

    • http (需要在网站根目录下放置一个文件, 来验证你的域名所有权, 完成验证)

      acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /home/wwwroot/mydomain.com/
    • apache

      acme.sh --issue -d mydomain.com --apache
    • nginx

      acme.sh --issue -d mydomain.com --nginx
    • 无服务器,临时监听80端口,生成证书

      acme.sh --issue -d mydomain.com --standalone
    • DNS(域名上添加txt解析记录, 验证域名所有权)

      acme.sh --issue --dns -d mydomain.com
      acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商提供的 api 自动添加 txt 记录完成验证
      export DP_Id="1234"
      export DP_Key="sADDsdasdgdsf"
      acme.sh --issue --dns dns_dp -d mydomain.com -d www.mydomain.com
  3. 安装证书

    默认生成的证书都放在安装目录下: ~/.acme.sh/
    acme.sh --installcert -d mydomain.com \
    --key-file /etc/nginx/ssl/mydomain.key \
    --fullchain-file /etc/nginx/ssl/mydonain.cer \
    --reloadcmd "service nginx force-reload"
  4. 更新acme.sh

    #手动升级
    acme.sh --upgrade
    #自动升级
    acme.sh --upgrade --auto-upgrade
    #关闭自动升级
    acme.sh --upgrade --auto-upgrade 0

配置文件:

server {

server_name youdomain.proxygl.com;
access_log logs/youdomain.proxygl.com_access.log;

gzip off;
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/youdomain.proxygl.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/youdomain.proxygl.com/privkey.pem; # managed by Certbot

root /opt/www_youdomain.proxygl.com;
auth_basic "fun";
auth_basic_user_file /opt/nginx/conf/youdomain.proxygl.com.passwd;

location / {
resolver 8.8.8.8;
proxy_ignore_headers "Set-Cookie";
proxy_hide_header Set-Cookie;
proxy_set_header Cookie "";
proxy_set_header Accept "";
proxy_set_header Accept-Encoding "";

proxy_pass https://www.google.com;
}
}

auth_basic_user_file的格式如下:

# comment
name1:password1
name2:password2:comment
name3:password3

但是其中的password是要加密存储的,可以使用Openssl工具来生成:
输入两次密码,Openssl将输出加密后的密码密文。

[root]# openssl passwd
Password:
Verifying - Password:

将密文复制到auth_basic_user_file里相应用户名后面即可。

alias 和 root 的区别
  • alias 指定的目录是准确的,给location指定一个目录。
  • root 指定目录的上级目录,并且该上级目录要含有locatoin指定名称的同名目录
location /img/ {
    alias /var/www/image/;
} 

location /img {
    alias /var/www/image;
}

/img如果后边没有加 / 的话,那么 /var/www/image/ 后边加斜线和不加斜线是一样的

location /img/ {
    root /var/www/image;
}

访问/img/目录下的文件时,nginx会去/var/www/image/img/目录下找文件

注意:
1.使用alias时,目录名后面一定要加”/“。
2.使用alias标签的目录块中不能使用rewrite的break。
3.alias在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。
4.alias只能位于location块中

您是第 67931 位访客