nginx配置server模塊的問題
問題描述
假設(shè)有5個(gè)二級(jí)域名:
aaa.example.combbb.example.comccc.example.comddd.example.comeee.example.com
在配置nginx的時(shí)候,server模塊是這樣的:
server { listen 443 ssl http2;server_name aaa.example.com;root /var/www/aaa.example.com/public; index index.php index.html index.htm;location / {root /var/www/aaa.example.com/public;try_files $uri $uri/ /index.php?$query_string;index index.php index.html index.htm; } location ~ .php$ {try_files $uri /index.php =404;fastcgi_split_path_info ^(.+.php)(/.+)$;fastcgi_pass unix:/dev/shm/php-fpm.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;includefastcgi_params; }#... #... #...}
問題:1、有5個(gè)二級(jí)域名,必須要寫5個(gè)server模塊嗎?可以寫個(gè)通用的只用一個(gè)server模塊嗎?
2、如果寫5個(gè)server模塊的話,每個(gè)server模塊中的location ~ .php${ }模塊是一樣的,這個(gè)location ~ .php${ }模塊可以只寫一遍來共用嗎?也就是可以把它弄到server模塊的上一層模塊http模塊去嗎?
3、看到很多示例的root和index都要寫兩遍,server里面寫一遍,下一層的location / { }模塊中再寫一遍,這是為什么?
問題解答
回答1:server_name ~^(?<site>(aa|bb|cc).example.com)$;root /var/www/$site/public; # location 里的root如果一樣,可以不需要了,index也一樣,大多數(shù)人是復(fù)制的回答2:
1.當(dāng)你的5個(gè)域名指向同一根目錄,表示同一站點(diǎn)時(shí),server_name可以指定多個(gè)域名,用空格分隔;當(dāng)你的5個(gè)域名表示不同站點(diǎn),就要配置多個(gè)server段,通常用include指令來引入多個(gè)conf文件,每個(gè)域名是一個(gè)conf文件。2.location 指令只能是在server、location里;詳見官方文檔說明:3.location里的root index 可以共用server里的root index.
server name是可以指定多個(gè)域名的,用空格分隔
相關(guān)文章:
1. matplotlib - python函數(shù)的問題2. javascript - history.replaceState()無法改變query參數(shù)3. java - 是否類 類型指針、引用作為形參 ,函數(shù)結(jié)束不會(huì)自動(dòng)析構(gòu)類?4. angular.js - angular ng-class里面的引號(hào)問題5. 在mac下出現(xiàn)了兩個(gè)docker環(huán)境6. docker start -a dockername 老是卡住,什么情況?7. docker內(nèi)創(chuàng)建jenkins訪問另一個(gè)容器下的服務(wù)器問題8. mysql無法添加外鍵9. javascript - react 中綁定事件和阻止事件冒泡10. javascript - es6將類數(shù)組轉(zhuǎn)化成數(shù)組的問題
