使用 nginx 混合基于 IP 和名称的虚拟主机

ner*_*rkn 5 php nginx virtualhost

我设置了很多域,但如果只提供 IP 地址,我不知道如何配置。

说 foo.com 我有一个设置去 web/foo.com/htdocs,我想要 88.99.66.55 ip 地址就像一个域到 web/fook.com/htdocs

server {
    listen       80;
    server_name  85.99.66.55;
    location / {
            root  /home/web/fook.com/htdocs;
    }
 location ~ \.(php|php3|php4|php5)$ {
                root          /home/web/fook.com/htdocs;
                include       fastcgi_params;
                fastcgi_pass  127.0.0.1:9000;
        }
    }
Run Code Online (Sandbox Code Playgroud)

结果

  [warn]: conflicting server name "85.105.65.219" on 0.0.0.0:80, ignored
Run Code Online (Sandbox Code Playgroud)

Kyl*_*ndt 5

IP0.0.0.0是指所有IP。所以我认为你想要的更像是:

server {
    listen       85.99.66.55:80;
    server_name *.fook.com;
    location / {
        root  /home/web/fook.com/htdocs;
    }
}


server {
    listen       85.99.66.55:80;
    server_name *.arf.com;
    location / {
        root  /home/web/arf.com/htdocs;
    }
}
Run Code Online (Sandbox Code Playgroud)

您希望在此处保持网络层直。server_name用于 HTTP(第 7 层)请求中的 HOST 标头,而 Listen 用于 IP 和端口——网络和传输层,或 IP 和 TCP 数据包(第 3 层和第 4 层)。