logo NodeSeekbeta

Nginx反代Emby(能反代套了CF的)

安装 Nginx

sudo apt update
sudo apt install nginx

初始化工作

放行端口

sudo apt install ufw -y
sudo ufw allow ssh
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp
sudo ufw enable
sudo ufw reload

设置 Nginx 开机启动和启动 Nginx

sudo systemctl enable nginx
sudo systemctl start nginx

新建反代网站配置文件

cd /etc/nginx/sites-enabled
touch my.domain.com

编辑 Nginx 配置文件

vi /etc/nginx/sites-enabled/my.domain.com

配置文件如下:(用于后续 Acme. Sh 使用 Nginx 来申请 SSL 证书)

server {
    listen       80;
    listen       [::]:80;
    server_name  my.domain.com;
}

安装 acme. Sh

curl https://get.acme.sh | sh -s [email protected]
source ~/.bashrc

申请证书

  • 假定自己的域名: my. Domain. Com
  • 反代的域名:proxy. Domain. Com
acme.sh --issue -d my.domain.com --nginx

运行后没有问题会得到如下结果:

Your cert is in: /root/.acme.sh/my.domain.com_ecc/my.domain.com.cer
Your cert key is in: /root/.acme.sh/my.domain.com_ecc/my.domain.com.key
The intermediate CA cert is in: /root/.acme.sh/my.domain.com_ecc/ca.cer
And the full-chain cert is in: /root/.acme.sh/my.domain.com_ecc/fullchain.cer

然后再次编辑配置文件,完整配置文件如下:

# 这部分用于Acme.sh使用Nginx来申请SSL证书
server {
    listen       80;
    listen       [::]:80;
    server_name  my.domain.com;
}

server {
    # 监听IPv4和IPv6的443端口,启用SSL和HTTP/2协议
    listen                  443 ssl http2;
    listen                  [::]:443 ssl http2;
    
    # 指定服务器名称(域名)
    server_name             my.domain.com;

    # SSL证书配置
    # 指定SSL证书文件路径,用于加密HTTPS通信
    ssl_certificate         /root/.acme.sh/my.domain.com_ecc/fullchain.cer;
    # 指定SSL证书密钥文件路径
    ssl_certificate_key     /root/.acme.sh/my.domain.com_ecc/my.domain.com.key;

    # SSL优化配置
    ssl_protocols           TLSv1.2 TLSv1.3; # 启用TLS 1.2和1.3协议,禁用不安全的旧版本
    ssl_ciphers             HIGH:!aNULL:!MD5; # 强制使用安全加密算法
    ssl_prefer_server_ciphers on; # 优先使用服务器端的加密算法
    ssl_session_cache       shared:SSL:10m; # 启用SSL会话缓存以提高性能
    ssl_session_timeout     1d; # 设置SSL会话缓存过期时间为1天

    # 安全相关的HTTP头配置
    add_header              Strict-Transport-Security "max-age=31536000; includeSubDomains" always; # 启用HSTS,强制所有子域名也使用HTTPS,缓存1年
    add_header              X-Frame-Options DENY; # 禁止页面被嵌入iframe,防止点击劫持
    add_header              X-Content-Type-Options nosniff; # 防止浏览器猜测文件类型

    # 反向代理配置
    location / {
        # 将所有请求转发到后端服务器 https://proxy.domain.com:443
        proxy_pass            https://proxy.domain.com:443;
        
        # 设置传递给后端的Host头信息为客户端请求的主机名
        proxy_set_header      Host $proxy_host;
        # 设置X-Real-IP头,将客户端的真实IP传递给后端
        proxy_set_header      X-Real-IP $remote_addr;
        # 设置X-Forwarded-For头,包含客户端的真实IP以及经过的代理IP
        proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
        # 设置X-Forwarded-Proto头,指示原始请求的协议
        proxy_set_header      X-Forwarded-Proto $scheme;
        
        # 配置代理SSL SNI(服务器名称指示)
        proxy_ssl_name        proxy.domain.com;
        proxy_ssl_server_name on; # 启用SNI,使后端服务器根据域名提供正确的SSL证书
    }
}

保存退出后执行:

nginx -s reload

没有报错,就可以愉快的看剧了~
主打简单,能直接放出来。别的可以自己根据需求修改。
我自己的特地dd小鸡走了一遍这个流程,测试没问题后发出来的 xhj015

1234
  • 技术贴,帮顶

  • 个人感觉
    用端口转发会更流畅点
    仅在emby端装个nginx用来反代和套ssl

  • @vpsex #2 我主要用来反代屏蔽大陆的公益服来自己看。

  • BD,蹲一波NPM版 xhj003

  • @jayolim #4

    location / {
    proxy_ssl_name $server;
    proxy_ssl_server_name on;
    proxy_pass $forward_scheme://$server:$port;
    }
    
  • 好麻烦 caddy 几行配置搞定。。

    example.com {

    reverse_proxy https://example.com {

    header_up Host {upstream_hostport}

    header_up Accept-Encoding identity

    }

  • bd

  • @Tony #6 Caddy我前面也写了。看个人喜好了。

  • @jayolim #4
    直接配置文件丢给gpt让他告诉你具体流程就行

1234

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72518位seeker

🎉欢迎新用户🎉