Configure Nginx to adapt websites to PCs and mobile phones

Source: Internet
Author: User

Configure Nginx to adapt websites to PCs and mobile phones

Considering the compatibility of websites on multiple devices, many websites have two versions, mobile and computer. Access the same website URL. When the server identifies a user using a computer to access the website, the page of the computer version is opened. If the user uses a mobile phone to access the website, the page of the mobile version is displayed.

1. Determine the device type of the Client

To adapt websites to PCs and mobile devices, you must first make accurate judgments. The User-Agent in the HTTP request Header can differentiate the browser type of the client. The User-Agent can be used to determine the device of the client.

Whether it is PC or mobile phone, it is not easy to realize this judgment by yourself due to the diversity of operating systems and browsers. Fortunately, there is an open-source User-Agent Solution in foreign countries to distinguish between PCs and mobile phones, which can be directly used:

Http://detectmobilebrowsers.com/

As Nginx is used in this article, you only need to download the Nginx configuration on the website.

 

Set $ mobile_rewrite do_not_perform; if ($ http_user_agent ~ * "(Android | bb \ d + | meego ). + mobile | avantgo | bada \/| blackberry | blazer | compal | Eline | fennec | hiptop | iemobile | ip (hone | od) | iris | kindle | lge | maemo | midp | mmp | mobile. + firefox | netfront | opera m (ob | in) I | palm (OS )? | Phone | p (ixi | re) \/| plucker | pocket | psp | series (4 | 6) 0 | symbian | treo | up \. (browser | link) | vodafone | wap | windows ce | xda | xiino ") {set $ mobile_rewrite perform;} if ($ http_user_agent ~ * "^ (1207 | 6310 | 6590 | too so | 4thp | 50 [1-6] I | 770s | 802s | a wa | abac | ac (er | oo | s \-) | ai (ko | rn) | al (av | ca | co) | amoi | an (ex | ny | yw) | aptu | ar (ch | go) | as (te | us) | attw | au (di | \-m | r | s) | avan | be (ck | ll | nq) | bi (lb | rd) | bl (ac | az) | br (e | v) w | bumb | bw \-(n | u) | c55 \/| capi | ccwa | cdm \-| cell | chtm | cldc | cmd \-| co (mp | nd) | craw | da (it | ll | ng) | dbte | dc \-s | devi | dica | dmob | do (c | p) o | ds (12 | \-d) | el (49 | ai) | em (l2 | ul) | er (ic | k0) | esl8 | ez ([4-7] 0 | OS | wa | ze) | fetc | fly (\-| _) | g1 u | g560 | gene | gf \-5 | g \-mo | go (\. w | od) | gr (ad | un) | haie | hcit | hd \-(m | p | t) | hei \-| hi (pt | ta) | hp (I | ip) | hs \-c | ht (c (\-| _ | a | g | p | s | t) | tp) | hu (aw | tc) | I \-(20 | go | ma) | i230 | iac (| \-| \/) | ibro | idea | ig01 | ikom | im1k | inno | ipaq | iris | ja (t | v) a | jbro | jemu | jigs | kddi | keji | kgt (|\/) | klon | kpt | kwc \-| weight (c | k) | le (no | xi) | lg (g | \/(k | l | u) | 50 | 54 | \-[a-w]) | libw | lynx | m1 \-w | m3ga | m50 \/| ma (te | ui | xo) | mc (01 | 21 | ca) | m \-cr | me (rc | ri) | mi (o8 | oa | ts) | mmef | mo (01 | 02 | bi | de | do | t (\-| o | v) | zz) | mt (50 | p1 | v) | mwbp | mywa | n10 [0-2] | n20 [2-3] | n30 (0 | 2) | n50 (0 | 2 | 5) | n7 (0 (0 | 1) | 10) | ne (c | m) \-| on | tf | wf | wg | wt) | nok (6 | I) | nzph | o2im | op (ti | wv) | oran | owg1 | p800 | pan (a | d | t) | pdxg | pg (13 | \-([1-8] | c) | phil | pire | pl (ay | uc) | pn \-2 | po (ck | rt | se) | prox | psio | pt \-g | qa \-a | qc (07 | 12 | 21 | 32 | 60 | \-[2-7] | I \-) | qtek | r380 | r600 | raks | rim9 | ro (ve | zo) | s55 \/| sa (ge | ma | mm | MS | ny | va) | SC (01 | h \-| oo | p \-) | sdk \/| se (c (\-| 0 | 1) | 47 | mc | nd | ri) | sgh \-| shar | sie (\-| m) | sk \-0 | sl (45 | id) | sm (al | ar | b3 | it | t5) | so (ft | ny) | sp (01 | h \-| v) | sy (01 | mb) | t2 (18 | 50) | t6 (00 | 10 | 18) | ta (gt | lk) | tcl \-| tdg \-| tel (I | m) | tim \-| t \-mo | to (pl | sh) | ts (70 | m \-| m3 | m5) | tx \-9 | up (\. B | g1 | si) | utst | v400 | v750 | veri | vi (rg | te) | vk (40 | 5 [0-3] | \-v) | vm40 | voda | vulc | vx (52 | 53 | 60 | 61 | 70 | 80 | 81 | 83 | 85 | 98) | w3c (\-|) | webc | whit | wi (g | nc | nw) | wmlb | wonu | x700 | yas \-| your | zeto | zte \-)") {set $ mobile_rewrite perform;} if ($ mobile_rewrite = perform) {# mobile phone}

Nginx obtains the User-Agent of the HTTP request through the above configuration and uses a regular expression to match the mobile phone device.

 

2. Adapt to different pages based on the device

First, you must prepare two sets of pages for the website's PC version and mobile phone version, and use the previous device judgment to reverse proxy to different versions:

 

Location/{proxy_pass http: // 192.168.20.1; # COMPUTER edition if ($ mobile_rewrite = perform) {proxy_pass http: // 192.168.20.2; # mobile edition }}
If a static page does not require reverse proxy, replace proxy_pass with root:

 

 

location / {root /html/pc;if ($mobile_rewrite = perform) {root /html/mobile;}}

3. link the mobile phone version to the PC version

After the user opens the page, if the user enters the mobile phone version, the device may be incorrectly judged, or the user wants to obtain more information, the user may need to open the PC version. At the bottom of the mobile phone version page, there is usually a link pointing to the PC version:

You can use JavaScript to set a Cookie when you click the "computer version" link:

 

Computer Edition
At the same time, add a judgment in Nginx. If this Cookie is included, enter the PC version:

 

 

if ($http_cookie ~ 'gotopc=true') {set $mobile_rewrite do_not_perform;}
4. debugging

 

After completing the preceding configuration, you can use the Chrome browser to simulate devices such as mobile phones and tablets.

 

Finally, complete Nginx configuration is provided:

 

Server {listen 80; set $ mobile_rewrite do_not_perform; if ($ http_user_agent ~ * "(Android | bb \ d + | meego ). + mobile | avantgo | bada \/| blackberry | blazer | compal | Eline | fennec | hiptop | iemobile | ip (hone | od) | iris | kindle | lge | maemo | midp | mmp | mobile. + firefox | netfront | opera m (ob | in) I | palm (OS )? | Phone | p (ixi | re) \/| plucker | pocket | psp | series (4 | 6) 0 | symbian | treo | up \. (browser | link) | vodafone | wap | windows ce | xda | xiino ") {set $ mobile_rewrite perform;} if ($ http_user_agent ~ * "^ (1207 | 6310 | 6590 | too so | 4thp | 50 [1-6] I | 770s | 802s | a wa | abac | ac (er | oo | s \-) | ai (ko | rn) | al (av | ca | co) | amoi | an (ex | ny | yw) | aptu | ar (ch | go) | as (te | us) | attw | au (di | \-m | r | s) | avan | be (ck | ll | nq) | bi (lb | rd) | bl (ac | az) | br (e | v) w | bumb | bw \-(n | u) | c55 \/| capi | ccwa | cdm \-| cell | chtm | cldc | cmd \-| co (mp | nd) | craw | da (it | ll | ng) | dbte | dc \-s | devi | dica | dmob | do (c | p) o | ds (12 | \-d) | el (49 | ai) | em (l2 | ul) | er (ic | k0) | esl8 | ez ([4-7] 0 | OS | wa | ze) | fetc | f Ly (\-| _) | g1 u | g560 | gene | gf \-5 | g \-mo | go (\. w | od) | gr (ad | un) | haie | hcit | hd \-(m | p | t) | hei \-| hi (pt | ta) | hp (I | ip) | hs \-c | ht (c (\-| _ | a | g | p | s | t) | tp) | hu (aw | tc) | I \-(20 | go | ma) | i230 | iac (| \-| \/) | ibro | idea | ig01 | ikom | im1k | inno | ipaq | iris | ja (t | v) a | jbro | jemu | jigs | kddi | keji | kgt (|\/) | klon | kpt | kwc \-| weight (c | k) | le (no | xi) | lg (g | \/(k | l | u) | 50 | 54 | \-[a-w]) | libw | lynx | m1 \-w | m3ga | m50 \/| ma (te | ui | xo) | mc (01 | 21 | ca) | m \-cr | me (rc | ri) | m I (o8 | oa | ts) | mmef | mo (01 | 02 | bi | de | do | t (\-| o | v) | zz) | mt (50 | p1 | v) | mwbp | mywa | n10 [0-2] | n20 [2-3] | n30 (0 | 2) | n50 (0 | 2 | 5) | n7 (0 (0 | 1) | 10) | ne (c | m) \-| on | tf | wf | wg | wt) | nok (6 | I) | nzph | o2im | op (ti | wv) | oran | owg1 | p800 | pan (a | d | t) | pdxg | pg (13 | \-([1-8] | c )) | phil | pire | pl (ay | uc) | pn \-2 | po (ck | rt | se) | prox | psio | pt \-g | qa \-a | qc (07 | 12 | 21 | 32 | 60 | \-[2-7] | I \-) | qtek | r380 | r600 | raks | rim9 | ro (ve | zo) | s55 \/| sa (ge | ma | mm | MS | ny | va) | SC (01 | h \-| oo | P \-) | sdk \/| se (c (\-| 0 | 1) | 47 | mc | nd | ri) | sgh \-| shar | sie (\-| m) | sk \-0 | sl (45 | id) | sm (al | ar | b3 | it | t5) | so (ft | ny) | sp (01 | h \-| v) | sy (01 | mb) | t2 (18 | 50) | t6 (00 | 10 | 18) | ta (gt | lk) | tcl \-| tdg \-| tel (I | m) | tim \-| t \-mo | to (pl | sh) | ts (70 | m \-| m3 | m5) | tx \-9 | up (\. B | g1 | si) | utst | v400 | v750 | veri | vi (rg | te) | vk (40 | 5 [0-3] | \-v) | vm40 | voda | vulc | vx (52 | 53 | 60 | 61 | 70 | 80 | 81 | 83 | 85 | 98) | w3c (\-|) | webc | whit | wi (g | nc | nw) | wmlb | wonu | x700 | yas \-| your | Zeto | zte \-) ") {set $ mobile_rewrite perform;} if ($ http_cookie ~ 'Gotopc = true') {set $ mobile_rewrite do_not_perform;} location/{proxy_pass http: // 192.168.20.1; # PC Edition if ($ mobile_rewrite = perform) {proxy_pass http: // 192.168.20.2; # mobile phone version }}}

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.