nginx ip名称子域别名403错误

语境:
– 我有nginx监听端口80,并提供静态文件(jpg,css,js等)
– 如果非静态文件,我proxypass到Apache在8080听
– 我使用“secure_link”来保护我的文件被未经授权的人下载。
– 我在DNS中有一条logging,例如:

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”replace为“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托pipe在服务器#1上,其中声明了sub1的名称。
– sub1.mydomain.org名称在服务器#2上redirect,该服务器托pipe要保护的文件。
– 上面的nginx.conf文件是服务器#2(sub1.mydomain.org)上的文件。 服务器#1(mydomain.org)只运行Apache2。
– 服务器#2上的目录是这样的:

 /var/www/ |_ download/ |_ index.html 
  • 在浏览器中打开http://sub1.mydomain.org正确打开index.html(在服务器#2上)

server_name localhost;

这真的在你的nginx.conf中,或者你伪造了这个SF? 如果你想让IP和域名提供来自同一个虚拟主机的请求,你应该改变你的configuration

 listen 80 default_server; server_name _; 

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

我希望这有帮助。