平常最多的需求是將baidu.com指向全域名www.badu.com,但是往往需求是各種各樣,這兩天就遇到一個反向需求。將baidu.com直接訪問網站,而不做跳轉。
最近兩天在給域名證書續費,但是需要外國證書認證機構給域名注冊時留的郵箱發郵件確認,發了幾次郵件,仍然沒有收到郵件。於是,協商決定在網站下面放一個認證碼,讓國外訪問來確定域名歸屬。
以下把我在配置過程中遇到的問題總結如下:
1、tomcat下新建目錄下文件訪問404
接到這個問題,想着很簡單,在站點目錄下面創建一個文件,然后全路徑訪問就好了,但是當真的這么做了以后,才發現事情並沒有那么簡單,檢查過權限啊,重啟啊,總是404.然后網上查資料,各種回答都有,有的說把web.xml放到新建目錄下,照做后,問題
仍然沒有解決。咨詢了開發后,才知道開發在springMVC.xml下配置了啟動tomcat后加載的資源和要攔截的地址(目錄地址)。比如我要訪問www.baidu.com/.well-known/1.txt,那么我就要在springMVC.xml下添加下面兩行內容:
<!-- 自動掃描controller包下的所有類,使其認為spring mvc的控制器 --> <context:component-scan base-package="com.hengxin.qianee.controller" /> <mvc:annotation-driven /> <mvc:resources mapping="/css/**" location="/css/" /> <mvc:resources mapping="/images/**" location="/images/" /> <mvc:resources mapping="/js/**" location="/js/" /> <mvc:resources mapping="/skippr/**" location="/skippr/" /> ....... <mvc:resources mapping="/sitemap.txt" location="/" /> <mvc:resources mapping="/sitemap.xsl" location="/" /> <mvc:resources mapping="/silian.txt" location="/" /> <mvc:resources mapping="/.well-known/**" location="/.well-known/" /> <mvc:interceptors> <!-- 使用bean定義一個Interceptor,直接定義在mvc:interceptors根下面的Interceptor將攔截所有的請求 --> <mvc:interceptor> <mvc:mapping path="/**"/> <!-- 需排除攔截的地址 --> <mvc:exclude-mapping path="/.well-known/**"/> <mvc:exclude-mapping path="/css/**"/> <mvc:exclude-mapping path="/images/**"/> <mvc:exclude-mapping path="/js/**"/> <mvc:exclude-mapping path="/skippr/**"/> <mvc:exclude-mapping path="/account/getCity"/> <mvc:exclude-mapping path="/account/getAreas"/>
2、使用baidu.com直接訪問網站。
原本網站做的跳轉,如果輸入baidu.com的時候自動跳轉到www.baidu.com,但是現在認證方需要實現不要直接跳轉,而是直接訪問baidu.com/.well-known/1.txt,獲取到認證方發來的認證碼(這個認證碼是事先發過來的,只要放到這個1.txt中即可),而我們網站做的多層跳轉,如下圖:
配置文件如下:

1 server 2 { 3 listen 80; 4 proxy_set_header Host $http_host; 5 proxy_set_header X-Real-IP $remote_addr; 6 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 7 server_name www.baidu.com; 8 9 location ^~/front/aboutUs/aboutUs/9 10 { 11 proxy_pass http://baidu; 12 } 13 14 location / 15 { 16 rewrite ^(.*) https://www.baidu.com$1 permanent; 17 } 18 } 19 20 21 server 22 { 23 listen 80; 24 proxy_set_header Host $http_host; 25 proxy_set_header X-Real-IP $remote_addr; 26 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 27 server_name baidu.com; 28 29 location ^~/front/aboutUs/aboutUs/9 30 { 31 proxy_pass http://baidu; 32 } 33 rewrite ^(.*) http://baidu.com$1 permanent; 34 35 } 36 37 38 39 server 40 { 41 listen 443; 42 proxy_set_header Host $http_host; 43 proxy_set_header X-Real-IP $remote_addr; 44 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 45 server_name www.baidu.com; 46 ssl on; 47 ssl_certificate /data/src/baidu.crt; 48 ssl_certificate_key /data/src/baidu.key; 49 ssl_session_timeout 5m; 50 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 51 52 location ^~/front/aboutUs/aboutUs/9 53 { 54 rewrite ^(.*) http://www.baidu.com$1 permanent; 55 } 56 57 location / 58 { 59 proxy_pass http://baidu; 60 } 61 } 62 63 server 64 { 65 listen 443; 66 ssl on; 67 proxy_set_header Host $http_host; 68 proxy_set_header X-Real-IP $remote_addr; 69 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 70 server_name baidu.com; 71 ssl_certificate /data/src/baidu.crt; 72 ssl_certificate_key /data/src/baidu.key; 73 ssl_session_timeout 5m; 74 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 75 rewrite ^(.*) https://www.baidu.com$1 permanent; 76 77 location / 78 { 79 proxy_pass https://baidu; 80 } 81 }
本來想把其中的baidu.com的跳轉給取消掉,結果,測試結果顯示跳轉太多,無法顯示;然后又想把443的跳轉和其他的多余的跳轉都注銷掉,測試結果顯示了404,上述兩種方法都否決了。
查閱了一番資料,仍然未果。
於是咨詢了朋友,他們建議把80和443的虛擬主機配置上別名。但是仔細檢查了下配置文件,心想即使配置上別名,仍然會將baidu.com跳轉到www.baidu.com;但是仍然抱着破罐破摔的心態,決定嘗試下,結果配置完后,居然成功了。
下面是配置過后的配置文件:
server { listen 80; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; server_name www.baidu.com baidu.com; location ^~/front/aboutUs/aboutUs/9 { proxy_pass http://baidu; } location / { rewrite ^(.*) https://www.baidu.com$1 permanent; } } server { listen 443; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; server_name www.baidu.com baidu.com; ssl on; ssl_certificate /data/src/baidu.crt; ssl_certificate_key /data/src/baidu.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; location ^~/front/aboutUs/aboutUs/9 { rewrite ^(.*) http://www.baidu.com$1 permanent; } location / { proxy_pass http://baidu; } }
注:以上網站網址baidu.com是化名,並非真正網站網址。為保護網站信息,借用而已。