[英]Nginx different root folder on “location” directive = 403 Forbidden error
我是網絡開發人員。 當我開始開發網站時,在我要開發的網站准備就緒之前,我的客戶的域必須指向另一台服務器,我曾經做過的事情是:
1)將其域添加到我的服務器2)編輯我的主機文件,然后將域指向服務器的IP。
上述設置的問題是,客戶看不到我正在開發的網站,因此我創建了一個域來臨時托管他們的網站,直到他們准備好為止。 所以:
mydomain.com/client1
mydomain.com/client2
mydomain.com/client3
假設我正在為xyz.com開發一個網站。 為了避免進行重大更改以將網站從mydomain.com/xyz傳輸到xyz.com(這也位於我的服務器中),我希望mydomain.com/client1加載xyz根文件夾中的文件。 這種將mydomain.com/xyz傳輸到xyz.com的方法就像更改dns記錄一樣簡單。
因此,這是xyz.com的虛擬主機:
server {
error_log /var/log/nginx/vhost-error_log warn;
listen 1.1.1.1:80;
server_name mydomain.com www.mydomain.com;
access_log /usr/local/apache/domlogs/mydomain.com-bytes_log bytes_log;
access_log /usr/local/apache/domlogs/mydomain.com combined;
root /home/mydomain/public_html;
location ^~ /xyz {
root /home/xyz/public_html;
}
location / {
location ~.*\.(3gp|gif|jpg|jpeg|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|html|htm|txt|js|css|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xlsx|pdf|iso)$ {
expires 1d;
try_files $uri @backend;
}
error_page 405 = @backend;
add_header X-Cache "HIT from Backend";
proxy_pass http://1.1.1.1:8081;
include proxy.inc;
}
location @backend {
internal;
proxy_pass http://1.1.1.1:8081;
include proxy.inc;
}
location ~ .*\.(php|jsp|cgi|pl|py)?$ {
proxy_pass http://1.1.1.1:8081;
include proxy.inc;
}
location ~ /\.ht {
deny all;
}
}
看起來不錯,但是當我訪問它時,我得到了:
我也嘗試使用別名,但是沒有用。 嘗試使用和不使用“ ^〜”。
我究竟做錯了什么?
很好,您沒有定義任何索引,所以我假設服務器正在嘗試列出文件夾的內容,這是被禁止的,因為您不允許自動索引,
嘗試添加
index index.html index.whatever;
在/xyz
塊中
或者,如果您只想列出文件夾內容,請使用
autoindex on;
正確的答案是Nginx反向代理多個后端
您應該將這些行添加到服務器或位置邊距。
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
除此之外,您應該增加哈希大小,添加這兩行。
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.