V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
redam
V2EX  ›  NGINX

nginx 怎么配置只允许: [①某些域名解析 且只能 ②被某一台 nginx 服务器代理]

  •  1
     
  •   redam · 2019-11-15 11:54:44 +08:00 · 3692 次点击
    这是一个创建于 1854 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ①我是会的,但是①+②死活配不出来,有懂的 v 友吗?谢谢了
    13 条回复    2019-11-18 10:31:26 +08:00
    akira
        1
    akira  
       2019-11-15 12:19:25 +08:00
    1+2 是啥意思
    jybox
        2
    jybox  
       2019-11-15 12:33:25 +08:00   ❤️ 1
    ① 配一个 default_server 拒掉所有请求
    ② allow 1.2.3.4; deny all
    redam
        3
    redam  
    OP
       2019-11-15 14:16:41 +08:00
    @akira 就是同时满足 1 和 2
    redam
        4
    redam  
    OP
       2019-11-15 14:18:56 +08:00
    @jybox emmmm,好像不行,我的意思是通过我自己的域名可以访问这台服务器,其他域名想解析进来不行;同时,我也希望这台服务器能被自己的另一台服务器所代理,其他不认识的进不来。可以详细点嘛?谢谢啦
    wangyzj
        5
    wangyzj  
       2019-11-15 14:23:59 +08:00
    禁止 IP 访问
    只允许你的域名
    俩服务之间 iptables 只允许互相 80,443 访问
    CivAx
        6
    CivAx  
       2019-11-15 15:46:26 +08:00
    这标题我看了 5 分钟没看懂…

    * 只通过你的域名可以访问这台服务器( IP ),其他域名解析进来不行
    靠北,你其他域名不要在 A 记录里写这台服务器的 IP 不就得了…

    如果你的这台服务器在别人的 NGINX 之后,你在前置 NGINX 上写专门对应监听的 conf 文件,locaiton 里 pp 到指定服务器 IP 就好了嘛
    smilzman
        7
    smilzman  
       2019-11-15 16:15:14 +08:00
    2 楼说的对,百度禁止空主机头
    redam
        8
    redam  
    OP
       2019-11-15 17:09:12 +08:00
    emmm,情况是这样的,A 服务器我用 default_server 去防止恶意域名解析,然后发现,我的另一台 B 服务器想转发请求到这台 A 服务器(通过 passproxy ),发现都是 502,根本做不了代理
    dier
        9
    dier  
       2019-11-15 17:38:14 +08:00   ❤️ 1
    在 B 服务器上用 proxy_pass A 对外的域名,来代理。
    Livid
        10
    Livid  
    MOD
       2019-11-16 01:42:41 +08:00   ❤️ 1
    @redam proxy_pass 之前有没有 proxy_set_header Host ?
    eason1874
        11
    eason1874  
       2019-11-16 09:04:03 +08:00   ❤️ 1
    一、A 服务器增加一个 default.conf 禁止 Nginx conf 未绑定的域名。

    server {
    listen 80 default_server;
    server_name _;
    return 444;
    }

    二、其他服务器代理的时候,如果是 proxy_pass 用的是服务器 IP,那么必须指定正确的 A 服务器域名作为 host 头,比如你 IP 是 1.2.3.4,域名是 a.com ,你可以这么配置:

    proxy_pass http://a.com/;

    或者这么配置:

    proxy_pass http://1.2.3.4/;
    proxy_set_header Host "a.com";

    总之,Host 要正确,用域名的时候自动加了 host 头所以不用手动指定,用 IP 的时候就必须要手动指定。用域名也有一个地方要注意,服务器要能解析到正确的 IP,所以如果上游服务器是自己的一般还是用 IP 然后指定 host 头。

    三、通过指定 default_server 可以解决其他域名恶意解析到 A 服务器的问题。

    至于其他服务器恶意反代你 A 域名的问题,只要你 A 域名提供公开访问,那就没办法通过配置禁止反代,因为反代能配置得跟真实用户一样。

    如果有人一心要反代你的网站,你只能跟他们斗智斗勇,经常更新反制措施来加大他们的反代成本。

    举几个例子:

    1、你把反代 IP 抓出来屏蔽,那对方得上代理或者拨号 VPS。
    2、你通过 JS 判断域名跳转,那对方得加 filter 修改你的代码。
    3、你隐藏关键内容要求用户输入验证码,那对方还得反代验证码。
    redam
        12
    redam  
    OP
       2019-11-18 10:31:03 +08:00
    @Livid 这样确实可以,感谢感谢
    redam
        13
    redam  
    OP
       2019-11-18 10:31:26 +08:00
    @eason1874 确实是这样,感谢感谢,很详细
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2382 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:36 · PVG 23:36 · LAX 07:36 · JFK 10:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.