一次css頁面加載異常的折騰

1       原始需求

近期在搭建平臺,因多域名會分割流量,所以希望將類似

ansible.178linux.com  salt.178linux.com qa.178linux.com 這些平臺整合為一個平臺,所示如下

ansible.178linux.com =è www.www58058.com/doc/ansible

salt.178linux.com =è www.www58058.com/doc/salt

qa.178linux.com =è www.www58058.com/doc/qa

以些方式最大程度提高平臺整體權重。整合過程中出現一個css頁面加載異常問題特總結分享

2       問題回放

一次css頁面加載異常的折騰

如圖: 右瀏覽器頁面css,js,圖片等樣式無法加載,顯示丑陋,

Chrome F12 debug追蹤后發現有部分樣式不加載,但該頁面所有請求均能正常請求并被回應,狀態值均為200,

2.1     初步懷疑

2.1.1  css,js目錄權限問題  失敗

這個問題容易解決,驗證也不成問題,

# cd /data/webapps/doc

# chown www. ansible -R

2.1.2  樣式文件copy遺漏  失敗

確保所有樣式文件均沒有遺漏,

但測試下來仍然樣式渲染不正常

2.2     確認所有請求回應數據

沒有其它辦法,只能對比doc.178linux.com正常請求來逐個請求和回應數據逐一查看,確認每個請求和回應的數據是否全部都一樣.經仔細查看果然發現問題了.

1.     部分css.js,能正常被辨別被正常解析為 text/css  text/javascripts,部分只能被解析為text/html

一次css頁面加載異常的折騰

2.     查看頁面源碼并比對發現所有源碼是一樣的

3.       google  Content-Type: text/html 發現如下幾篇文章

https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Configuring_server_MIME_types

http://stackoverflow.com/questions/5413107/headercontent-type-text-css-is-working-in-firefox-and-chrome-but-in-inter 

2.2.1  初步懷疑

2.2.1.1 /etc/nginx/mime.types文件沒有定義 css,js解析結構  —失敗

和運營環境正常配置的nginx對比后沒有異常

2.2.1.2 瀏覽器緩存或瀏覽器支持問題失敗

一次css頁面加載異常的折騰

發現firefox,chrome均有問題,ie正常,但原因還是無從得知

 

3       從源開始

3.1     Nginx配置

server
	{
		listen 80 default;
		server_name www.www58058.com;
		index  index.php index.html;
		root  /data/webapps/;
                access_log /var/log/nginx/access.log;
                error_log /var/log/nginx/error.log;

		error_page   404   /404.html;
		location ~ [^/]\.php(/|$){
			try_files $uri =404;
			fastcgi_pass  127.0.0.1:9000;
			fastcgi_index index.php;
			include fastcgi.conf;
			#include pathinfo.conf;
			}

		location  ~  /doc/ansible/ {
		        index  index.php index.html;
			try_files $uri $uri/ =404;
			fastcgi_pass  127.0.0.1:9000;
			fastcgi_index index.php;
			include fastcgi.conf;
		}

		location /nginx_status {
			stub_status on;
			access_log   off;
		}

		location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
			{
			expires      30d;
			}

		location ~ .*\.(js|css)?$
			{
			expires      12h;
			}


               if (-f $request_filename/index.html){
               		rewrite (.*) $1/index.html break;
  	         }
	       if (-f $request_filename/index.php){
               		rewrite (.*) $1/index.php;
	         }
               if (!-f $request_filename){
        	        rewrite (.*) /index.php;
 		} 

	}
server
	{
		server_name doc.178linux.com;
		index  index.php index.html;
		root  /data/tran/build/html/;
                access_log /var/log/nginx/access.log;
                error_log /var/log/nginx/error.log;

		error_page   404   /404.html;
		location ~ [^/]\.php(/|$){
			try_files $uri =404;
			fastcgi_pass  127.0.0.1:9000;
			fastcgi_index index.php;
			include fastcgi.conf;
			#include pathinfo.conf;
			}

		location /nginx_status {
			stub_status on;
			access_log   off;
		}

		location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
			{
			expires      30d;
			}

		location ~ .*\.(js|css)?$
			{
			expires      12h;
			}


               if (-f $request_filename/index.html){
               		rewrite (.*) $1/index.html break;
  	         }
	       if (-f $request_filename/index.php){
               		rewrite (.*) $1/index.php;
	         }
               if (!-f $request_filename){
        	        rewrite (.*) /index.php;
 		} 

	}

清理思緒,從頭再來,幾經檢查覺得可能性最大的還是nginx的配置問題,從這個點出發再次切入,增加如下配置后刷新再看,問題解決。 

找了一番官網發現沒有特別合適的說明,從配置上看我的個人理解是:

Location匹配到字段后將不會繼續查找其它匹配字段,因本頁面中即有簡單的html頁面也有css,js等樣式在解析過程中找不到對應配置,所以根據配置規則全部解析為html方式,css,js樣式以html的方式是無法正常解析,所以導致樣式加載異常。

一次css頁面加載異常的折騰

 

原創文章,作者:stanley,如若轉載,請注明出處:http://www.www58058.com/5215

(0)
stanleystanley
上一篇 2015-06-08
下一篇 2015-06-11

相關推薦

  • redis/twemproxy 客戶端連接異常

    對于一個DBA,客戶端連接異常問題可以說是家常便飯的事情,處理多了都想吐。 root cause無疑發生在三個地方,先找自身的原因,依次排查下去: 1)服務器端db的負載,如果負載太高,創建socket太慢引起超時。另外服務器端socket的個數太多,也可以導致創建連接需要很長的時間或者創建連接不成功。 2)網絡是夠有抖動,包括lvs/twemproxy重啟…

    Linux干貨 2015-04-03
  • MySQL架構

    1.MySQL整體邏輯架構 我們先下圖看看MySQL整體邏輯架構(MySQL’s Logical Architecture)                       圖1  第一層,即最上一層,所包含的服務并不是MySQL所獨有的技術?!?/p>

    Linux干貨 2015-04-13
  • rpm包管理

    一、什么是RPM     RPM全稱為“RedHat Package Manager”,看名字就知道這是RedHat公司搞出來的,后來因為RPM發展的很好,逐漸成為了一種通用的標準,就更名為“RPM is Package Manager"。     RPM最大的特點就是…

    Linux干貨 2015-05-11
  • Linux網站架構系列之Apache—-進階篇

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1320167 本篇博文為Linux網站架構系列之apache的第二篇,我將帶大家一起學習apache的編譯參數,目錄結構和配置文件等方面的知識,實現對apac…

    Linux干貨 2016-08-15
  • 推薦-zabbix原理篇(1)

    zabbix原理篇(1) 介紹zabbix 之前讓我們先來熟悉一下什么snmp ☺ SNMP:Simple Network Management Protoclol  翻譯一下:簡單網絡管理協議 SNMP的工作模式是啥 ☺ NMS向agent采集數據 agent向NMS報告數據 NMS請求agent修改配置 SNMP組件…

    Linux干貨 2016-04-11
  • Linux安全和openssl、gpg加密

                     Linux安全和openssl、gpg加密 本章內容: 安全機制 對稱加密 不對稱加密 散列算法 PKI和CA openssl 證書管理 gpg   加密需要: 不加密的流量易受攻擊性 密碼/數據嗅探 數據操作 驗證操作 相當…

    系統運維 2016-10-09
欧美性久久久久