溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Nginx實(shí)用的配置技巧有哪些

發(fā)布時間:2021-12-07 11:44:51 來源:億速云 閱讀:130 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹Nginx實(shí)用的配置技巧有哪些,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

一個站點(diǎn)配置多個域名

server {     listen       80;     server_name  ops-coffee.cn b.ops-coffee.cn; }

server_name 后跟多個域名即可,多個域名之間用空格分隔

一個服務(wù)配置多個站點(diǎn)

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虛擬主機(jī)配置實(shí)現(xiàn),Nginx有三種類型的虛擬主機(jī)

基于IP的虛擬主機(jī): 需要你的服務(wù)器上有多個地址,每個站點(diǎn)對應(yīng)不同的地址,這種方式使用的比較少

基于端口的虛擬主機(jī): 每個站點(diǎn)對應(yīng)不同的端口,訪問的時候使用ip:port的方式訪問,可以修改listen的端口來使用

基于域名的虛擬主機(jī):  使用最廣的方式,上邊例子中就是用了基于域名的虛擬主機(jī),前提條件是你有多個域名分別對應(yīng)每個站點(diǎn),server_name填寫不同的域名即可

nginx添加賬號密碼驗(yàn)證

server {     location / {         auth_basic "please input user&passwd";         auth_basic_user_file key/auth.key;     } }

有很多服務(wù)通過nginx訪問,但本身沒有提供賬號認(rèn)證的功能,就可以通過nginx提供的authbase賬號密碼認(rèn)證來實(shí)現(xiàn),可以用以下腳本來生成賬號的密碼

# cat pwd.pl  #!/usr/bin/perl use strict;  my $pw=$ARGV[0] ; print crypt($pw,$pw)."\n";

使用方法:

# perl pwd.pl ops-coffee.cn opf8BImqCAXww # echo "admin:opf8BImqCAXww" > key/auth.key

nginx開啟列目錄

當(dāng)你想讓nginx作為文件下載服務(wù)器存在時,需要開啟nginx列目錄

server {     location download {         autoindex on;          autoindex_exact_size off;         autoindex_localtime on;     } }

autoindex_exact_size: 為on(默認(rèn))時顯示文件的確切大小,單位是byte;改為off顯示文件大概大小,單位KB或MB或GB

autoindex_localtime: 為off(默認(rèn))時顯示的文件時間為GMT時間;改為on后,顯示的文件時間為服務(wù)器時間

默認(rèn)當(dāng)訪問列出的txt等文件時會在瀏覽器上顯示文件的內(nèi)容,如果你想讓瀏覽器直接下載,加上下邊的配置

if ($request_filename ~* ^.*?\.(txt|pdf|jpg|png)$) {     add_header Content-Disposition 'attachment'; }

配置默認(rèn)站點(diǎn)

server {     listen 80 default; }

當(dāng)一個nginx服務(wù)上創(chuàng)建了多個虛擬主機(jī)時默認(rèn)會從上到下查找,如果匹配不到虛擬主機(jī)則會返回***個虛擬主機(jī)的內(nèi)容,如果你想指定一個默認(rèn)站點(diǎn)時,可以將這個站點(diǎn)的虛擬主機(jī)放在配置文件中***個虛擬主機(jī)的位置,或者在這個站點(diǎn)的虛擬主機(jī)上配置listen  default

不允許通過IP訪問

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

可能有一些未備案的域名或者你不希望的域名將服務(wù)器地址指向了你的服務(wù)器,這時候就會對你的站點(diǎn)造成一定的影響,需要禁止IP或未配置的域名訪問,我們利用上邊所說的default規(guī)則,將默認(rèn)流量都轉(zhuǎn)到404去

上邊這個方法比較粗暴,當(dāng)然你也可以配置下所有未配置的地址訪問時直接301重定向到你的網(wǎng)站去,也能為你的網(wǎng)站帶來一定的流量

server {     rewrite ^/(.*)$ https://ops-coffee.cn/$1    permanent; }

直接返回驗(yàn)證文件

location = /XDFyle6tNA.txt {     default_type text/plain;     return 200 'd6296a84657eb275c05c31b10924f6ea'; }

很多時候微信等程序都需要我們放一個txt的文件到項目里以驗(yàn)證項目歸屬,我們可以直接通過上邊這種方式修改nginx即可,無需真正的把文件給放到服務(wù)器上

nginx配置upstream反向代理

http {     ...     upstream tomcats {         server 192.168.106.176 weight=1;         server 192.168.106.177 weight=1;     }      server {         location /ops-coffee/ {              proxy_pass http://tomcats;               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_set_header X-Forwarded-Proto $scheme;         }     }  }

稍不注意可能會落入一個proxy_pass加杠不加杠的陷阱,這里詳細(xì)說下proxy_pass http://tomcats與proxy_pass  http://tomcats/的區(qū)別:

雖然只是一個/的區(qū)別但結(jié)果確千差萬別。分為以下兩種情況:

1. 目標(biāo)地址中不帶uri(proxy_pass  http://tomcats)。此時新的目標(biāo)url中,匹配的uri部分不做修改,原來是什么就是什么。

location /ops-coffee/ {     proxy_pass  http://192.168.106.135:8181; }  http://domain/ops-coffee/   -->     http://192.168.106.135:8181/ops-coffee/ http://domain/ops-coffee/action/abc   -->     http://192.168.106.135:8181/ops-coffee/action/abc

2. 目標(biāo)地址中帶uri(proxy_pass  http://tomcats/,/也是uri),此時新的目標(biāo)url中,匹配的uri部分將會被修改為該參數(shù)中的uri。

location /ops-coffee/ {     proxy_pass  http://192.168.106.135:8181/; }  http://domain/ops-coffee/   -->     http://192.168.106.135:8181 http://domain/ops-coffee/action/abc   -->     http://192.168.106.135:8181/action/abc

nginx upstream開啟keepalive

upstream tomcat {     server ops-coffee.cn:8080;     keepalive 1024; }  server {     location / {         proxy_http_version 1.1;         proxy_set_header Connection "";          proxy_pass http://tomcat;     } }

nginx在項目中大多數(shù)情況下會作為反向代理使用,例如nginx后接tomcat,nginx后接php等,這時我們開啟nginx和后端服務(wù)之間的keepalive能夠減少頻繁創(chuàng)建TCP連接造成的資源消耗,配置如上

keepalive:  指定每個nginxworker可以保持的***連接數(shù)量為1024,默認(rèn)不設(shè)置,即nginx作為client時keepalive未生效

proxy_http_version 1.1: 開啟keepalive要求HTTP協(xié)議版本為HTTP 1.1

proxy_set_header Connection "": 為了兼容老的協(xié)議以及防止http頭中有Connection  close導(dǎo)致的keepalive失效,這里需要及時清掉HTTP頭部的Connection

404自動跳轉(zhuǎn)到首頁

server { location / { error_page 404 = @ops-coffee; } location @ops-coffee {  rewrite .* / permanent; }}

網(wǎng)站出現(xiàn)404頁面不是特別友好,我們可以通過上邊的配置在出現(xiàn)404之后給自動跳轉(zhuǎn)到首頁去

以上是“Nginx實(shí)用的配置技巧有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI