安裝css
1.上傳安裝包nginx-1.15.8.tar.gz,openssl-1.1.0g.tar.gz,pcre-8.38.tar.gz,zlib-1.2.8.tar.gz到/usr/local/src目錄下html
2.解壓安裝包,命令:
tar xvzf nginx-1.15.8.tar.gz
tar xvzf openssl-1.1.0g.tar.gz
tar xvzf pcre-8.38.tar.gz
tar xvzf zlib-1.2.8.tar.gz
3.進入nginx解壓目錄,配置nginx模塊,編譯安裝,命令:
cd nginx-1.15.8
./configure --with-pcre=../pcre-8.38 --with-zlib=../zlib-1.2.8 --with-openssl=../openssl-1.1.0g --with-http_ssl_module --with-http_realip_module --with-http_sub_module
make
make install
4.建立/usr/local/nginx/ssl目錄,拷貝secret.key文件和secret.crt文件到此目錄下nginx
5.拷貝nginx配置文件到/usr/local/nginx/conf目錄下,修改轉發配置而後啓動web
遇到過的坑redis
針對分用戶下nginx上傳文件失敗的問題作了日誌分析和實驗獲得結論:
1、知識前提:
1.nginx 的http{ } 層 的 client_body_buffer_size 配置 是nginx請求體的大小緩存設置,他能夠是全局變量的也能夠是局部的變量。
知識來源:https://blog.csdn.net/wangbin_0729/article/details/82109693
2.重點 :client_body_buffer_size 不存在時默認爲128k或者更小 ;請求體小於該配置則使用內存存放數據,大於該配置則使用臨時目錄存放數據(臨時目錄爲/client_body_temp/)
知識來源:http://www.guodongkeji.com/newsshow-25-3046-1.html
3.分用戶下nginx生成的臨時目錄/client_body_temp/的權限爲nobody (形成的緣由在後面會提到) ,該目錄只有root用戶有絕對的訪問權限,當分用戶aweb訪問該目錄時會收到拒絕訪問的警告。
2、分析緣由:
當經過nginx上傳錄音文件時,錄音文件以post請求的請求體形式傳到nginx服務器,可是錄音文件大小超過了client_body_buffer_size,nginx須要啓用臨時文件目錄/client_body_temp/,而使用了分用戶的nginx進程沒有訪問此目錄權限,致使上傳文件失敗。(經過日誌分析獲得
3、解決方案:
1.賦予/client_body_temp/ aweb:ucc權限 優缺點:能夠不用設置client_body_buffer_size,文件上傳對內存消耗小。可是麻煩容易忘記。
2.設置client_body_buffer_size 50M(按照須要設置,考慮清楚要上傳文件的最大文件的大小可能值)
優缺點:將設置歸到nginx設置裏面去簡單易記。可是每次上傳文件均要使用內存來緩存數據,增長了對內存的消耗,文件上傳請求高併發下內存可能撐不住。緩存
針對分用戶下nginx試聽錄音文件失敗的問題作了日誌分析和實驗獲得初步結論:
1、知識前提:
1.location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|properties|wav)$ { root /home/aweb/web/WebContent; expires 7d;}配置會把全部帶.wav請求指向/home/aweb/web/WebContent/任意字符串.wav 的資源
2.location /fileServer/ { alias /home/aweb/s/; }會將帶/fileServer/的請求 指向 /home/aweb/s/任意資源文件 。
2、分析緣由:
以上2個配置存在一個邏輯上的bug就是當請求中即帶有/fileServer/又帶.wav文件時,請求到底指向哪裏,根據實驗發現指向了/home/aweb/web/WebContent/任意字符串.wav,而此路徑不是正確的錄音文件所在路徑。
3、解決方案:
1.去掉location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|properties|wav)$ { root /home/aweb/web/WebContent; expires 7d;}中的|wav。
優缺點:請求錄音文件直接指向了nginx服務器的所在路徑。缺點是去掉|wav後可能會導其餘一些帶.wav不帶/fileServer的請求沒法指向/home/aweb/web/WebContent/任意字符串.wav的資源。
2.將location /fileServer/ { alias /home/aweb/s/; }替換成 location ~ /fileServer { proxy_pass http://web;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";client_max_body_size 1000m;}
優缺點:全部的帶/fileServer/請求反向代理到web, 輪詢該配置裏面的服務器地址upstream web{server172.16.7.17:8082 ;server172.16.7.18:8082 ; keepalive 200;}實際訪問的資源是tomcat所在服務器的資源。tomcat
補充說明關於分用戶的一點要注意的問題:
1、關於nginx
1.當nginx是分用戶時,若在root用戶下執行nginx -t 會將nginx中部分目錄的權限(如:proxy_temp)變成 nobody用戶致使nginx的讀寫權限出現error報錯。
2.目前不清楚其餘的不當操做是否也會形成目錄權限的變化,所以在平時執行命令時請多關注一下nginx中的目錄權限是否發生改變。
2、解決方案
1.若要使用分用戶部署nginx,全部命令均在分用戶下執行,防止出現文件目錄權限發生變化。
2.對nginx目錄執行 chown 用戶名:組名 -R nginx/ 命令,將nginx即其如下全部目錄權限強制轉換爲分用戶的權限。服務器
後續跟蹤:
1.目前分用戶部署存在一些坑,redis和tomcat可能也會存在同nginx相似的權限問題,如有發現請重視反饋排查緣由。
2.對於分用戶部署下的nginx,須要有針對上面2個問題綜合整理出一個合理的解決方案。併發