日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx基本配置

發布時間:2025/3/21 Nginx 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx基本配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文提要:本文緊供參考,如有錯誤請聯系我


目錄

一.為nginx增加網站認證功能

二.實現安全加密網站

三.動靜分離

四.地址重寫

1:相同網站內的頁面跳轉

2.相同網站內的頁面跳轉,地址欄會變化

3.從舊網站跳到新網站

4.不同網站的相同頁面的跳轉

5.為瀏覽器用戶設置專屬頁面(為了方便書寫這里就用火狐代替了)

地址重寫的選項

五.Nginx集群代理服務器

六.集群的優化

1.調節集群主機任務量分配

2.健康檢查

3.相同客戶機訪問相同服務器

4.添加down 標記避免重復登陸)

5.查看網站后臺數據

6.緩存文件在客戶端

7.優化nginx支持超長地址欄(不用加模塊)

8.優化nginx并發

七.使用nginx創建其他業務集群

八.解決集群主機過多而導致用戶重復登陸網站

1.安裝memcache數據庫(內存數據是臨時的)

2.測試數據庫

3.最后在服務器主機修改session存儲的位置,實現session共享



一.為nginx增加網站認證功能

auth_basic "password:";??? //網頁彈出的提示信息(不會直接顯示信息)(認證) auth_basic_user_file "/usr/local/nginx/pass";?? //存放網站賬戶(密碼)的文件

yum -y install httpd-tools //安裝軟件包,可以支持htpasswd命令 htpasswd -c pass tom //創建pass文件與tom賬戶,還要輸入兩次密碼(cat pass查看) 文件也可以用絕對路徑/usr/local/nginx/pass或在當前使用相對路徑pass htpasswd pass abc //多追加一個賬戶測試(加-c代表創建新文件,追加不需要加c選項,加c則前面的用戶作廢,也不需要再創建文件)

二.實現安全加密網站

server {listen 443 ssl;server_name www.c.com; //這里修改域名ssl_certificate cert.pem; //證書,包含公鑰ssl_certificate_key cert.key; //私鑰ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location / {root html_c; //這里修改頁面存儲目錄index index.html index.htm;} }

三.動靜分離

location ~ \.php$ { //~是使用正則表達式,匹配用戶輸入的內容以.php結尾root html; //網站頁面位置,不用改,保持默認 fastcgi_pass127.0.0.1:9000;//一旦用戶訪問了.php結尾的文件,就讓nginx找后臺的php-fpm(端口號9000) 該配置文件要于 /etc/php-fpm.d/www.conf 文件的地址對應fastcgi_index index.php; //動態網站的默認頁面,無需修改# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; //無用 行,保持注釋狀態include fastcgi.conf; //這里需要修改名稱}

四.地址重寫

1:相同網站內的頁面跳轉

server {listen 80;server_name localhost;rewrite ^/a.html$ /b.html; //相同網站不同頁面charset utf-8;access_log logs/host.access.log main;root html;index index.html index.htm;}

2.相同網站內的頁面跳轉,地址欄會變化

server {listen 80;server_name localhost;rewrite ^/a.html$ /b.html redirect; //在剛剛的配置中添加redirectcharset utf-8;access_log logs/host.access.log main;root html;index index.html index.htm;}

3.從舊網站跳到新網站

server {listen 80;server_name localhost;rewrite / http://www........; //訪問192.168.2.5就跳到...charset utf-8;access_log logs/host.access.log main;root html;index index.html index.htm;}

4.不同網站的相同頁面的跳轉

server {listen 80;server_name localhost;rewrite /(.*) http://www...../$1; //訪問老網站的某個頁面時,跳轉到新網站對應的相同頁面。前面使用正則表達式匹配用戶輸入的任意頁面,并保存起來(小括號在正則中的效果是保留,相當于復制),后面使用$1將之前保 存的頁面地址粘貼到新網站charset utf-8;access_log logs/host.access.log main;root html;index index.html index.htm;}

5.為瀏覽器用戶設置專屬頁面(為了方便書寫這里就用火狐代替了)

server {listen 80;server_name localhost;rewrite /(.*) /firefox/$1; //就進行地址重寫操作,讓用戶看到火狐專屬頁面 } //$http_user_agent是nginx的內置變量,存儲了用戶的信息,比如用的什么瀏覽器 ~匹配正則 *忽略大小寫charset utf-8;access_log logs/host.access.log main;root html;index index.html index.htm;}

地址重寫的選項

last???? 不再讀其他

rewrite break??? 不再讀其他語句

redirect???? 臨時重定向?? 狀態碼302 爬蟲不更新URI

permanent?? 永久重定向?? 狀態碼 301?? ?爬蟲更新 URI

????????????????????????????????選項測試1:last?? 不再讀其他rewrite??????????????????????????

server {listen 80;server_name localhost;rewrite /a.html /b.html last; //如果沒有last,看a頁面會得到c頁面rewrite /b.html /c.html;charset utf-8;access_log logs/host.access.log main;root html;index index.html index.htm;}

????????????????????????????????選項測試2:break 不再讀其他語句?

location / { //此處為默認的location rewrite /a.html /b.html break; //將last改為break可以阻止后面的語句root html;index index.html index.htm;} location /b.html { //這里是新添加的location rewrite /b.html /c.html; }

五.Nginx集群代理服務器

http { upstream web { // server 192.168.2.100:80; //這里是集群中的服務器ip與端口 server 192.168.2.200:80; //第二臺集群主機 } server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / { proxy_pass http://web; //在虛擬主機調用集群root html;index index.html index.htm;} }

六.集群的優化

1.調節集群主機任務量分配

在上述配置中改:server 192.168.2.200:80 weight=2;??? //權重,值越大,分配的任務量越多

2.健康檢查

在上述配置中改:server 192.168.2.200:80 max_fails=2 fail_timeout=30;?? //檢測兩次如果失敗,則認為集群中的主機故障,之后等待30秒再次測試

3.相同客戶機訪問相同服務器

upstream web { ip_hash; //相同客戶機訪問相同服務器,讓一個客戶機訪問集群時鎖定 一個后臺服務器,避免重復登陸的問題 server 192.168.2.100:80; server 192.168.2.200:80 max_fails=2 fail_timeout=30; }

4.添加down 標記避免重復登陸)

upstream web {
ip_hash;(相同客戶訪問相同服務器)
server 192.168.2.100:80;
server 192.168.2.200:80 down;?? //添加down標記,使集群主機
暫時不參與集群任務
}

5.查看網站后臺數據

--with-http_stub_status_module //利用到的模塊 location /status { //在error_page行上面添加此內容 stub_status on;(顯示后臺數據)(這里就可以測試) allow 192.168.2.5; //只允許2.5查看(如果不加這個的話,只要有人知道status都可以訪問) deny all; //拒絕其他主機 } sbin/nginx -s reload //重加載配置 下課休息 17:45回 Curl 192.168.2.5/status 或(firefox 192.168.2.5/status) //查看頁面 Active connections:當前活動的連接數量(當前有多少用戶訪問該網站)。 Accepts:已經接受客戶端的連接總數量。 Handled:已經處理客戶端的連接總數量。 Requests:客戶端發送的請求數量。 Reading:當前服務器正在讀取客戶端請求頭的數量。 Writing:當前服務器正在寫響應信息的數量。 Waiting:當前多少客戶端在等待服務器的響應。

6.緩存文件在客戶端

一臺服務器的相同數據可能會被同一個客戶反復訪問,為了不重復讓服務器給客戶傳遞相同數據,達到節約資源、節省時間的目的,我們可以進行以下優化配置

location(匹配) ~* \.(jpg|html|txt|png)$ { //當用戶訪問的是這幾種類型的文件 expires 30d; //都會緩存在客戶機上30天 }

7.優化nginx支持超長地址欄(不用加模塊)

默認情況下nginx無法支持長地址欄,會報414錯誤

打開配置文件,在默認的虛擬主機上方添加兩行

client_header_buffer_size 200k;?? //第一行表示,用戶訪問網站的頭部信
息(包含地址欄)長度支持200k大小
large_client_header_buffers 4 200k;? //第二行表示,如果200k不夠,再
給4個200k

8.優化nginx并發

并發:多數用戶同時對網站發起訪問,并發量支持的越高,說明網站性能越強。

默認情況下nginx并發僅僅支持1024個,需要修改配置才能增加

worker_processes 2; //開啟的nginx進程數量,通常是隨cpu的核心數一致worker_connections 50000; //每個nginx進程支持的并發訪問量

?七.使用nginx創建其他業務集群

./configure --with-stream --with-http_stub_status_module???? //這里的--with-stream 是添加四層代理模塊,可以用來創建其他業務集群(查看網站后臺數據)

stream {???????? //創建新業務(在網站http外面)
upstream backend {??? //創建名叫backend的集群(后端)(可以自定義)
server 192.168.2.100:22;??? //集群中的主機使用22端口對外提供服務
server 192.168.2.200:22;
}
server {
listen 12345;??? //監聽端口號
proxy_pass backend;??? //調用集群(不是網站服務不用加http)
}
}
ssh? 192.168.2.5 -p 12345??? //嘗試遠程登錄,第一次可能會連接集群的某一臺主機比如web1
?

八.解決集群主機過多而導致用戶重復登陸網站

在一個集群中,如果網站需要用戶輸入用戶名和密碼登陸之后才能繼續訪問,那么當用戶登陸其中一臺集群主機之后隨著繼續訪問頁面,請求可能被代理服務器輪詢到另外一臺服務器上,那么對于另外一臺服務器來說用戶并沒有登陸,想查看登陸之后的頁面還需要再次登陸,這樣集群主機越多需要客戶重復登陸的次數就越多,想要解決該問題就要從Session與Cookies入手

Session:存儲在服務器端,保存用戶名、登陸狀態等信息。

Cookies:由服務器下發給客戶端,保存在客戶端的一個文件里。

保存的內容主要包括:SessionID

了統一session存儲的位置(該存儲方式通常被稱為session共享),需要安裝專門的數據庫工具 memcache? 可以利用內存存儲數據的高性能數據庫服務

1.安裝memcache數據庫(內存數據是臨時的)

????????????????yum -y install memcached telnet??? //裝包

????????????????systemctl start memcached?? //啟動服務

????????????????netstat -ntulp | grep memcached??? //查詢服務器

2.測試數據庫

telnet 127.0.0.1 11211 連接莫種服務的方法 //登錄到memcached服務進行測試 set abc 0 200 3 //創建變量abc,0是不壓縮數據,存活時間200秒,存3個字符(然后寫內容) get abc //查詢abc變量中的數據 replace abc 0 200 3 //覆蓋abc變量的數據(如果abc不存在則失敗) delete abc //刪除abc flush_all //刪除所有數據 add abc 0 200 3 //創建變量abc(如果abc存在則失敗) quit

3.最后在服務器主機修改session存儲的位置,實現session共享

vim /etc/php-fpm.d/www.conf //按G到最后一頁 php_value[session.save_handler] = memcache //這里改成memcache,表示session(file:文件)的存儲不在是本地的普通文件,而是去找memcache php_value[session.save_path] = tcp://192.168.2.5:11211 //這里的路徑修改為 安裝了memcache服務的服務器地址與端口(指定內存數據庫服務端) yum -y install php-pecl-memcache //安裝php與memcached服務關聯的軟件包 systemctl restart php-fpm //重啟php-fpm服務

總結

以上是生活随笔為你收集整理的Nginx基本配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。