首頁  >  問答  >  主體

nginx設定server的時候server_name不起作用?

nginx設定server的時候 server_name為什麼不行

server {
           listen 8000;
           server_name kaixuan.test.com;
           root /data1/htdocs/kaixuan.test.com/;
           location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
                include        fastcgi_params;
           }
           location / {
                 index index.html;
           }
}

server {
           listen 80;
           server_name kaixuan.hehe.com;
           root /data1/htdocs/kaixuan.hehe.com/;
           location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
                include        fastcgi_params;
           }
           location / {
                 index index.html;
           }
}

上面是我的程式碼,我設定了兩個server,server_name 和連接埠是不一樣的
但是我造訪 kaixuan.hehe.com:8000 竟然也進入了kaixuan.test.com。 【注意連接埠】
同樣,我造訪 kaixuan.test.com 也能進入kaixuan.hehe.com,這正常嗎?
如果這樣正常的話,那我們在線上怎麼解決?加一個預設的讓他預設進去嗎?

我想大声告诉你我想大声告诉你2713 天前1106

全部回覆(1)我來回復

  • 高洛峰

    高洛峰2017-05-16 17:17:16

    對的,加上一條預設的阻擋。

    當所有server的規則都不符時,nginx會採用第一條server配置,所以一般第一條server會使用阻止頁面。

    server {
       listen 80;
       server_name _;
       
       return 404;
    }

    回覆
    0
  • 取消回覆