前言
文章列舉了幾個Nginx常見的,實用的,有趣的配置,希望看過之后能說一句:學到了!
一個站點配置多個域名
server { listen 80; server_name ops-coffee.cn b.ops-coffee.cn;}
server_name 后跟多個域名即可,多個域名之間用空格分隔
一個服務配置多個站點
server { listen 80; server_name a.ops-coffee.cn; location / { root /home/project/pa; index index.html; }}server { listen 80; server_name ops-coffee.cn b.ops-coffee.cn; location / { root /home/project/pb; index index.html; }}server { listen 80; server_name c.ops-coffee.cn; location / { root /home/project/pc; index index.html; }}
基于Nginx虛擬主機配置實現,Nginx有三種類型的虛擬主機
基于IP的虛擬主機: 需要你的服務器上有多個地址,每個站點對應不同的地址,這種方式使用的比較少
基于端口的虛擬主機: 每個站點對應不同的端口,訪問的時候使用ip:port的方式訪問,可以修改listen的端口來使用
基于域名的虛擬主機: 使用最廣的方式,上邊例子中就是用了基于域名的虛擬主機,前提條件是你有多個域名分別對應每個站點,server_name填寫不同的域名即可
nginx添加賬號密碼驗證
server { location / { auth_basic "please input user&passwd"; auth_basic_user_file key/auth.key; }}
有很多服務通過nginx訪問,但本身沒有提供賬號認證的功能,就可以通過nginx提供的authbase賬號密碼認證來實現,可以用以下腳本來生成賬號的密碼
# cat pwd.pl #!/usr/bin/perluse strict;my $pw=$ARGV[0] ;print crypt($pw,$pw)."/n";
使用方法:
# perl pwd.pl ops-coffee.cnopf8BImqCAXww# echo "admin:opf8BImqCAXww" > key/auth.key
nginx開啟列目錄
當你想讓nginx作為文件下載服務器存在時,需要開啟nginx列目錄
server { location download { autoindex on; autoindex_exact_size off; autoindex_localtime on; }}
autoindex_exact_size: 為on(默認)時顯示文件的確切大小,單位是byte;改為off顯示文件大概大小,單位KB或MB或GB
autoindex_localtime: 為off(默認)時顯示的文件時間為GMT時間;改為on后,顯示的文件時間為服務器時間
默認當訪問列出的txt等文件時會在瀏覽器上顯示文件的內容,如果你想讓瀏覽器直接下載,加上下邊的配置
if ($request_filename ~* ^.*?/.(txt|pdf|jpg|png)$) { add_header Content-Disposition 'attachment';}
配置默認站點
server { listen 80 default;}
當一個nginx服務上創建了多個虛擬主機時默認會從上到下查找,如果匹配不到虛擬主機則會返回第一個虛擬主機的內容,如果你想指定一個默認站點時,可以將這個站點的虛擬主機放在配置文件中第一個虛擬主機的位置,或者在這個站點的虛擬主機上配置listen default
新聞熱點
疑難解答