Nginx 反向代理/CDN/缓存服务器
本文最后更新于 103 天前,其中的信息可能已经有所发展或是发生改变。

反向代理

如何代理网站,这里举一个代理Google的例子

    location / {
        proxy_ssl_server_name on;
        proxy_pass https://www.google.com/;
        proxy_set_header Accept-Encoding '';
        sub_filter "www.google.com" "YOUR_WEBSITE";
        sub_filter_once off;
        proxy_set_header Host $host;
        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection upgrade;
    }
HTTPS网站代理时务必在Nginx配置代理域名证书 也就是你自己的域名证书

这是什么意思?

proxy_ssl_server_name on; :HTTPS SNI回源

proxy_pass https://www.google.com/; : 代理www.google.com的数据

sub_filter "www.google.com" "YOUR_WEBSITE"; : 匹配文字修改,Google会在搜索时重新跳转回自己的域名,因此替换www.google.com到反代网站

sub_filter_once off; :配合上方使用,意为是否只替换一次

proxy_set_header Host $host; : 设置代理头,传递Host信息,否则会有一些奇奇怪怪的问题 记住这个待会儿要考

proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
:这两段都是向原站传递用户真实IP地址


proxy_http_version 1.1; : 定义HTTP版本

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
: websocket支持,用V2ray的应该很熟悉这个

Nginx CDN

    location / {
        proxy_ssl_server_name on;
        proxy_pass https://YOUR_WEBSITE_IP/;
        proxy_set_header Accept-Encoding '';
        proxy_set_header Host YOUR_WEBSITE; #这里记得改
        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection upgrade;
    }
HTTPS网站代理时务必在Nginx配置该网站证书

没错基本和反向代理一样,只是删掉了文本替换
原理是什么呢?
proxy_pass : 代理原服务器的数据
proxy_set_header Host : 向原服务器传递网站Host头,防止代理错误的网站 说了要考的

缓存

以下来自这里,稍作修改

做这些当然要缓存一下静态QWQ,不然对原站的负载太高失去了CDN原有的作用

HTTP层设置

proxy_connect_timeout 10;
proxy_read_timeout 180;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 96k;
proxy_temp_file_write_size 96k;
proxy_temp_path /var/cache/nginx/temp;
proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g; #/tmp/cache路径可以自定义

Server层设置

        location ~ .*.(gif|jpg|png|css|js)(.*) {
                proxy_pass http://YOUR_WEBSITE; #如果是作为CDN请在这里填写原站IP,否则填写反代地址
                proxy_redirect off;
                proxy_set_header Host $host; #如果作为CDN请将$host改为原站地址,否则填写反代地址
                proxy_cache cache_one;
                proxy_cache_valid 200 302 24h;
                proxy_cache_valid 301 30d;
                proxy_cache_valid any 5m;
                expires 90d;
        }

评论

  1. iloli
    Windows Edge
    10 月前
    2023-7-10 10:06:04

    明明是23年的稿子,却还不用上http2呢φ( ̄∇ ̄o)

    • 博主
      iloli
      Linux Chrome
      10 月前
      2023-7-10 10:24:16

      明明已经23年了,Nginx还是没能支持HTTP/2 1.24

发送评论 编辑评论


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