nginx ip A名称子域名别名403错误

nginx ip A名称子域名别名403错误

上下文:
- 我让 nginx 监听端口 80 并提供静态文件(jpg、css、js 等)
- 如果是非静态文件,我会通过代理传递到在 8080 监听的 Apache
- 我使用“secure_link”来保护我的文件不被未经授权的人员下载。
- 我的 DNS 中有一个 A 记录,例如:

sub1 IN A 123.45.67.89

结果:
- sub1.mydomain.org 成功访问。
- “secure_link” 几乎成功运行,我确实可以像这样保护我的文件:

http://123.45.67.89/authorized/personal.zip?h=jrzkNDEX5ie3nALar2_uuQ&e=1371539981

问题:
- 如果我将“ip”替换为“subdomain”,它会返回 nginx 403 错误:

http://sub1.mydomain.org/authorized/personal.zip?h=jrzkNDEX5ie3nALar2_uuQ&e=1371539981

额外信息:
- 除了奇怪的子域名问题之外,一切运行正常,我认为没有必要粘贴我的整个 nginx.conf 文件?

无论如何,这里是:

user www-data;
worker_processes  2;

events {
    worker_connections  1024;
}


http {

    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay on;
    keepalive_timeout  65;

    gzip on;
    gzip_disable "msie6";

    limit_conn_zone $binary_remote_addr zone=slowuser:10m;

    server {

        listen       80;
        server_name  localhost;

        location / {
            #root   /var/www;
            #index  index.html index.htm;
            proxy_pass http://127.0.0.1:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            access_log off;
            add_header Cache-Control public;
        }

        location ~* \.(jpg|jpeg|gif|css|png|js|ico|swf|mp3)$ {
            root   /var/www;
            expires        365d;
            access_log     off;
        }

        location /secretdir/ {
            deny all;
            return 403;
        }
        location /slow/ {
            secure_link $arg_h,$arg_e;
            secure_link_md5 secretkey1$uri$arg_e$remote_addr;

            if ($secure_link = "") {
                return 403;
            }

            if ($secure_link = "0") {
                return 403;
            }
            root   /var/www;
            limit_rate 25k;
            limit_conn slowuser 2;
            rewrite  ^/slow/(.*)$  /secretdir/$1  break;
        }
        location /authorized/ {
            secure_link $arg_h,$arg_e;
            secure_link_md5 secretkey2$uri$arg_e$remote_addr;

            if ($secure_link = "") {
                return 403;
            }

            if ($secure_link = "0") {
                return 403;
            }
            root   /var/www;
            rewrite  ^/authorized/(.*)$  /secretdir/$1  break;
        }

        location = /favicon.ico {
            log_not_found off;
            access_log off;
        }

    }

}

编辑:
请注意:
- mydomain.org 托管在服务器#1 上,其中声明了 sub1 的名称。
- sub1.mydomain.org A 名称重定向到服务器#2,服务器#2 托管要保护的文件。
- 上面的 nginx.conf 文件是服务器#2(sub1.mydomain.org)上的文件。服务器#1(mydomain.org)仅运行 Apache2。
- 服务器#2 上的目录如下:

/var/www/
      |_ download/
      |_ index.html

答案1

服务器名称本地主机;

这确实是你的 nginx.conf 中的配置,还是你为 SF 伪造的?如果你希望 IP 和域名从同一个虚拟主机处理请求,你应该将配置更改为

listen       80  default_server;
server_name  _;

我建议通过 HTTP 301(永久移动)将对您的 IP 地址的请求路由到有效的域名。

我希望这有帮助。

相关内容