Nginx 反代和重定向的简洁教程

现在 Docker 被广泛用在自建服务上,几个命令就能启动自己的服务,十分方便。有些服务需要开启 HTTPS 保证安全,通过反代开启 HTTPS 是一种简单又通用的方式。

本文简单介绍如何使用 Nginx 反向代理。

指标 描述
适用系统 Debian 系发行版,包括 Ubuntu, Armbian,其他发行版稍改命令一般也可
走通流程时间 10 分钟

I might have made some mistakes, please let me know if I’ve gotten anything wrong!


安装 Nginx

sudo apt update && sudo apt upgrade -y && sudo apt install nginx

编写配置文件

HTTP 反代

编写 Nginx 配置文件(注意修改 vfly2.com 文件名)

sudo vim /etc/nginx/sites-available/vfly2.com

当在 80 端口收到访问 vfly2.com 的请求时,就将请求转发给 http://127.0.0.1:7456

server {
    listen 80;
    server_name vfly2.com;

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

假设本机地址是 1.2.3.4,最终效果是:访问 http://vfly2.com 相当于访问 http://1.2.3.4:7456

简单介绍:

  • proxy_pass,指定后端服务的地址
  • proxy_set_header,修改 HTTP 请求头
    • Host,修改前是 vfly2.com,修改后是 127.0.0.1
    • X-Real-IP,修改前是 127.0.0.1 (如果不修改,后端服务收到的地址其实是 Nginx 的 IP 地址),修改后是真实的访问 IP
    • X-Forwarded-For,不了解

创建软链接,使配置文件生效(新创建的配置文件执行一次就行,后续修改无须再次执行)

sudo ln -s /etc/nginx/sites-available/vfly2.com /etc/nginx/sites-enabled/vfly2.com

HTTPS 反代

如果需要使用 HTTPS,则先获取证书:[[02acme.sh]] 使用 acme.sh 申请和自动更新证书的完整指南 – 技焉洲 (yanh.tech)

申请证书

acme.sh --issue -d vfly2.com --webroot /var/www/html

安装证书

acme.sh --install-cert -d vfly2.com \
--key-file       /etc/ssl/private/vfly2.com.key \
--fullchain-file /etc/ssl/certs/vfly2.com.cer

编写 Nginx 配置文件(注意修改文件名)

sudo vim /etc/nginx/sites-available/vfly2.com
# (可省略)当在 80 端口收到访问 vfly2.com 的请求时,301 重定向到 HTTPS,即 443 端口
server {
    listen 80;
    server_name vfly2.com;

    location /.well-known/acme-challenge/ {
        root /var/www/html;
    }

    location / {
        return 301 https://$server_name$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name vfly2.com;

    # 指定证书的路径
    ssl_certificate /etc/ssl/certs/vfly2.com.cer;
    ssl_certificate_key /etc/ssl/private/vfly2.com.key;

    # 避免阻断 acme 的自动申请
    location /.well-known/acme-challenge/ {
        root /var/www/html;
    }

    location / {
        proxy_pass http://127.0.0.1:7456;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
sudo ln -s /etc/nginx/sites-available/vfly2.com /etc/nginx/sites-enabled/vfly2.com

重定向

301是永久重定向,302是临时重定向

acme.sh --issue -d technique.vfly2.com --webroot /var/www/html
acme.sh --install-cert -d technique.vfly2.com \
--key-file       /etc/ssl/private/technique.vfly2.com.key \
--fullchain-file /etc/ssl/certs/technique.vfly2.com.cer
sudo vim /etc/nginx/sites-available/tech

同时监听 80 和 443 上对 technique.vfly2.com 的请求

server {
    listen 80;
    listen 443 ssl;
    server_name technique.vfly2.com;

    ssl_certificate /etc/ssl/certs/technique.vfly2.com.cer;
    ssl_certificate_key /etc/ssl/private/technique.vfly2.com.key;

    location / {
        return 301 https://yanh.tech$request_uri;
    }
}
sudo ln -s /etc/nginx/sites-available/tech /etc/nginx/sites-enabled/tech

重启生效

检查配置

sudo nginx -t

重启生效

sudo systemctl reload nginx

当域名更改解析 IP 后,需要重启 Nginx,因为它可能缓存了 IP


原文链接: https://yanh.tech/2024/09/tutorial-of-nginx-reverse-proxy-and-redirection/

版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 技焉洲 (yanh.tech)

保持更新 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的实用技能,欢迎使用 RSS 订阅,如果能留言互动就更好了。

可在 Telegram 群组 https://t.me/vfly2 交流依文章步骤遇到的问题。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇