nginx学习笔记

# apt安装nginx
apt install nginx

在基于debian的linux发行版中,nginx服务器的默认安装目录是/etc/nginx。这个目录包含了apache服务器的配置文件和相关资源。

.
├── conf.d(用于存放虚拟主机配置文件)
├── fastcgi.conf(FastCGI配置文件)
├── fastcgi_params(FastCGI参数配置文件)
├── koi-utf(用于字符编码转换)
├── koi-win(用于字符编码转换)
├── mime.types(定义了MIME类型及其对应的文件扩展名)
├── modules-available(存放nginx可用的模块)
├── modules-enabled(存放启用的nginx模块链接)
├── nginx.conf(nginx主配置文件)
├── proxy_params(用于定义反向代理服务器的参数配置)
├── scgi_params(用于定义SCGI服务器的参数配置)
├── sites-available(存放可用的虚拟主机配置文件)
├── sites-enabled(存放启用的虚拟主机配置文件链接)
├── snippets(可重用的nginx配置文件片段)
├── ssl(自己新建,存放SSL证书和秘钥文件)
├── uwsgi_params(用于定义uWSGI服务器的参数配置)
└── win-utf(用于字符编码转换,一般不需要修改)

1、配置http

# 在sites-available文件夹下新建xxx.example.com.conf
server {
    listen 80;
    # listen 443 ssl;

    server_name rssbridge1.gujiakai.top;
    # ssl_certificate /etc/nginx/ssl/rssbridge1.gujiakai.top.cert.pem;
    # ssl_certificate_key /etc/nginx/ssl/rssbridge1.gujiakai.top.key.pem;

    location / {
        proxy_pass http://127.0.0.1:3001;
    }
}

ln -s /etc/nginx/sites-available/xxx.example.com.conf /etc/nginx/sites-enabled/
# 记得在主配置文件nginx.conf中包含sites-enabled文件夹下的内容。
# 在http块中添加一条:include /etc/nginx/sites-enabled/*;

2、申请SSL证书

acme.sh --issue -d xxx.example.com --nginx

# 安装证书
acme.sh --install-cert -d xxx.example.com \
--key-file       /usr/local/nginx/ssl/private/xxx.example.com.key.pem  \
--fullchain-file /usr/local/nginx/ssl/certs/xxx.example.com.cert.pem \
--reloadcmd     "service nginx force-reload"
# 安装证书
acme.sh --install-cert -d uptime.gujiakai.top \
--key-file       /etc/nginx/ssl/uptime.gujiakai.top.key.pem  \
--fullchain-file /etc/nginx/ssl/uptime.gujiakai.top.cert.pem \
--reloadcmd     "service nginx force-reload"

3、彻底卸载nginx

# 停止nginx服务
syetemctl stop nginx
# 禁用nginx服务,使其不会在开机时自启
systemctl disable nginx
# 移除nginx服务文件
rm /etc.systemd/system/nginx.service
# 重新加载系统管理守护程序配置文件
systemctl daemon-reload
# 完全删除nginx,并删除其所有配置和数据文件
apt purge nginx
# 重置所有已经失败的系统单元(如服务、套接字、挂载点等)的状态,以便它们可以重新尝试启动。
systemctl reset-failed

4、典型的nginx配置反向代理模板

server {
    listen 80;
    server_name xxx.example.com;

    return 301 https://$host$request_uri;
}


server {
    listen 443 ssl;
    server_name xxx.example.com;
    
    ssl_certificate /etc/nginx/ssl/xxx.example.com.cert.pem;
    ssl_certificate_key /etc/nginx/ssl/xxx.example.com.key.pem;

    location / {
        proxy_pass http://127.0.0.1:3001;
    }
}
server {
    listen 80;
    server_name example.com;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/example.com.cert.pem;
    ssl_certificate_key /etc/nginx/ssl/example.com.key.pem;

    location / {
        proxy_pass http://127.0.0.1:8080;
        # 留客户端请求中的 "Host" 头。
        proxy_set_header Host $http_host;
        # 保留客户端的真实 IP 地址
        proxy_set_header X-Real-IP $remote_addr;
        # 保留请求经过的代理服务器及其客户端 IP 地址。
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 保留客户端请求使用的协议(HTTP 或 HTTPS)。
        proxy_set_header X-Forwarded-Proto $scheme;
        # 保留用于支持协议升级的 "Upgrade" 头(例如从 HTTP/1.1 切换到 WebSocket)。
        proxy_set_header Upgrade $http_upgrade;
        # 设置代理请求的 HTTP 版本为 1.1,以支持一些特定功能,如分块传输编码和协议升级。
        proxy_http_version 1.1;
    }
}

5、centos7安装nginx步骤

# 安装 EPEL 仓库
yum install epel-release
# 使用 EPEL 仓库安装 Nginx 并在安装过程中自动确认(-y 参数)
dnf install nginx -y
# 启用 Nginx 服务,使其在系统启动时自动运行
systemctl enable nginx
# 启动 Nginx 服务
systemctl start nginx

注:在 CentOS 7 中,默认的仓库里并没有包含 Nginx。要安装 Nginx,你需要先启用 EPEL(Extra Packages for Enterprise Linux)仓库,这是一个由 Fedora 项目提供的为 RHEL 和 CentOS 提供额外软件包的仓库。

6、angie web服务器是nginx的分支

基本操作同nginx

cd /etc/angie/http.d

vim alist.conf

server {
    listen 80;
    server_name alist.gujiakai.cn;

    location / {
        proxy_pass http://127.0.0.1:5244;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}


systemctl reload angie

curl https://get.acme.sh | sh -s email="[email protected]"

source ~/.bashrc

vim ~/.bashrc

export Ali_Key="<key>"
export Ali_Secret="<secret>"

source ~/.bashrc

acme.sh  --issue --dns dns_ali -d alist.gujiakai.cn

mkdir -p /etc/ssl/angie

chmod 700 /etc/ssl/angie

acme.sh --install-cert -d alist.gujiakai.cn \
--key-file       /etc/ssl/angie/alist.gujiakai.cn.key.pem  \
--fullchain-file /etc/ssl/angie/alist.gujiakai.cn.cert.pem \
--reloadcmd     "service angie force-reload"

vim /etc/angie/http.d/alist.conf

# 重定向HTTP到HTTPS
server {
    listen 80;
    server_name alist.gujiakai.cn;
    return 301 https://$host$request_uri;
}

# HTTPS服务器配置
server {
    listen 443 ssl;
    server_name alist.gujiakai.cn;

    ssl_certificate /etc/ssl/angie/alist.gujiakai.cn.cert.pem;
    ssl_certificate_key /etc/ssl/angie/alist.gujiakai.cn.key.pem;

    # 强化SSL设置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://127.0.0.1:5244;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

systemctl reload angie

7、angie安装console light

apt install angie-console-light

vim /etc/angie/http.d/angie-console.conf