// 編輯:這是我的本機開發伺服器
我有 PHP 內建伺服器在主機的連接埠 8000 上運行somehost.dev
。我想讓nginxsomehost.dev
從80埠代理到8000。
server {
listen 80;
server_name *.dev;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://$host:8000$uri;
proxy_redirect off;
}
}
出現錯誤:
[error] 30106#0: *1 no resolver defined to resolve somehost.dev, client: 127.0.0.1, server: *.dev, request: "GET /favicon.ico HTTP/1.1", host: "somehost.dev", referrer: "http://somehost.dev/admin"
我做錯了什麼?
答案1
新增resolver 127.0.0.1;
到您的配置中,如果您沒有在本機上執行 DNS,請將 127.0.0.1 替換為您設定中的 DNS 伺服器。
Nginx 解析器資訊:
Syntax: resolver address ... [valid=time] [ipv6=on|off];
Default: —
Context: http, server, location
配置用於將上游伺服器的名稱解析為位址的名稱伺服器,例如:
resolver 127.0.0.1 [::1]:5353;
位址可以指定為網域名稱或 IP 位址,以及可選連接埠(1.3.1、1.2.2)。如果未指定端口,則使用端口 53。名稱伺服器以循環方式查詢。
在 1.1.7 版本之前,只能配置單一名稱伺服器。從版本 1.3.1 和 1.2.2 開始支援使用 IPv6 位址指定名稱伺服器。
預設情況下,nginx 在解析時會尋找 IPv4 和 IPv6 位址。如果不需要尋找 IPv6 位址,則可以指定 ipv6=off 參數。
從版本 1.5.8 開始支援將名稱解析為 IPv6 位址。
預設情況下,nginx 使用回應的 TTL 值快取答案。可選valid
參數允許覆蓋它:
resolver 127.0.0.1 [::1]:5353 valid=30s;
在 1.1.9 版本之前,無法調整快取時間,並且 nginx 始終快取答案 5 分鐘。
Syntax: resolver_timeout time;
Default: resolver_timeout 30s;
Context: http, server, location
設定名稱解析的超時時間,例如:
resolver_timeout 5s;