I have problem with website that not detect mobile version when people try to surf the website from their phones
when i use Apache the code works as well , this problem only happen using nginx
This is the PHP code i use to detect visitor either using desktop or mobile
if($_COOKIE['detect_mobiles'] == 1)
{
$settings['template'] = 'smartphone';
}elseif($_COOKIE['detect_mobiles'] == 2)
{
}else{
if(preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"])){
$settings['template'] = 'smartphone';
setcookie('detect_mobiles','1',time()+(60200),'/');
setcookie('detect_mobiles2','3',time()+(60200),'/');
}else
{
setcookie('detect_mobiles','2',time()+(60200),'/');
}
}
this is my nginx configuration
Custom Rules
set $PROXY_DOMAIN_OR_IP "192.168.1.1";
Default.conf
server {
listen 80 default_server;
#listen [::]:80 default_server; # Uncomment if your server supports IPv6
server_name localhost;
# deny all; # DO NOT REMOVE OR CHANGE THIS LINE - Used when Engintron is disabled to block Nginx from becoming an open proxy
set $PROXY_DOMAIN_OR_IP $host;
# Set custom rules like domain/IP exclusions or redirects here
include custom_rules;
location / {
try_files $uri @backend;
}
location @backend {
include proxy_params_common;
# === MICRO CACHING ===
# Comment the following line to disable 1 second micro-caching for dynamic HTML content
include proxy_params_dynamic;
}
# Enable browser cache for static content files (TTL is 1 hour)
location ~* \.(?:json|xml|rss|atom)$ {
include proxy_params_common;
include proxy_params_static;
expires 60s;
add_header Pragma "public";
add_header Cache-Control "public";
add_header Vary "Accept-Encoding";
access_log off;
}
# Enable browser cache for CSS / JS (TTL is 30 days)
location ~* \.(?:css|js)$ {
include proxy_params_common;
include proxy_params_static;
expires 60s;
add_header Pragma "public";
add_header Cache-Control "public";
add_header Vary "Accept-Encoding";
access_log off;
}
# Enable browser cache for media & document files (TTL is 60 days)
location ~* \.(?:ico|jpg|jpeg|gif|png|bmp|webp|tiff|mp3|flac|ogg|mid|midi|wav|wma|mp4|mov|3gp|webm|mkv|ogv|wmv|zip|7z|tgz|gz|rar|bz2|tar|exe|pdf|doc|docx|xls|xlsx|ppt|pptx|rtf|odt|ods|odp)$ {
include proxy_params_common;
include proxy_params_static;
expires 60s;
add_header Pragma "public";
add_header Cache-Control "public";
access_log off;
}
# Deny access to hidden files
location ~ /\.ht {
deny all;
}
}
proxy_params_common
# General Proxy Settings
proxy_pass http://$PROXY_DOMAIN_OR_IP:8080;
proxy_http_version 1.1; # Always upgrade to HTTP/1.1
proxy_set_header Accept-Encoding ""; # Optimize encoding
proxy_set_header Connection ""; # Enable keepalives
proxy_set_header Host $host;
proxy_set_header Proxy "";
proxy_set_header Referer $http_referer;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header CF-Connecting-IP $http_cf_connecting_ip;
proxy_set_header Cf-Visitor $http_cf_visitor;
# Buffers
proxy_buffers 256 16k;
proxy_buffer_size 128k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
# Timeouts
proxy_connect_timeout 120s;
proxy_read_timeout 180s;
proxy_send_timeout 180s;
# Info
add_header X-Cache-Status $upstream_cache_status;
add_header X-Server-Powered-By "Engintron";
proxy_params_dynamic
set $CACHE_BYPASS_FOR_DYNAMIC 0;
set $EXPIRES_FOR_DYNAMIC "1s";
# CMS (& CMS extension) specific cookies (Joomla, K2, WordPress)
if ($http_cookie ~* "joomla_[a-zA-Z0-9_]+|userID|comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $CACHE_BYPASS_FOR_DYNAMIC 1;
set $EXPIRES_FOR_DYNAMIC 0;
}
# Invision Power Board (IPB)
if ($cookie_member_id ~ "^[1-9][0-9]*$") {
set $CACHE_BYPASS_FOR_DYNAMIC 1;
set $EXPIRES_FOR_DYNAMIC 0;
}
# Admin sections & generic entry point names for CMSs
if ($request_uri ~* "/administrator|/wp-admin|/wp-login.php|/ucp.php|/login|/connect") {
set $CACHE_BYPASS_FOR_DYNAMIC 1;
set $EXPIRES_FOR_DYNAMIC 0;
}
# Generic query string to request a page bypassing Nginx's caching
if ($query_string ~* "nocache") {
set $CACHE_BYPASS_FOR_DYNAMIC 1;
set $EXPIRES_FOR_DYNAMIC 0;
}
proxy_no_cache $CACHE_BYPASS_FOR_DYNAMIC;
proxy_cache_bypass $CACHE_BYPASS_FOR_DYNAMIC;
proxy_cache engintron_dynamic;
proxy_cache_key "$request_method$scheme$host$request_uri";
proxy_cache_lock on;
proxy_cache_methods GET HEAD;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; # Additional options: http_403 http_404
proxy_cache_valid 200 1s; # Adjust for longer cache times (unfortunately, we cannot use a variable here)
proxy_ignore_headers Expires Cache-Control Set-Cookie Vary;
# Headers
expires $EXPIRES_FOR_DYNAMIC;
add_header Pragma "public";
add_header Cache-Control "public";
add_header Vary "Accept-Encoding";
proxy_params_static
proxy_cache engintron_static;
proxy_cache_key "$request_method$scheme$host$request_uri";
proxy_cache_lock on;
proxy_cache_min_uses 1;
proxy_cache_revalidate on;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; # Additional options: http_403 http_404
proxy_cache_valid 200 301 302 1m; # Covers 200, 301 & 302 responses, caching time set to 1 minute
proxy_ignore_headers Set-Cookie;
nginx.conf
user nginx;
worker_processes auto;
worker_rlimit_nofile 65535;
pid /var/run/nginx.pid;
events {
worker_connections 8192;
multi_accept on;
}
http {
## Basic Settings ##
client_body_timeout 20s; # Use 5s for high-traffic sites
client_header_timeout 20s; # Use 5s for high-traffic sites
client_max_body_size 1024m;
keepalive_timeout 20s;
port_in_redirect off;
sendfile on;
server_names_hash_bucket_size 64;
server_name_in_redirect off;
server_tokens off;
tcp_nodelay on;
tcp_nopush on;
types_hash_max_size 2048;
## DNS Resolver ##
# If in China, enable the OpenDNS entry that matches your network connectivity (IPv4 only or IPv4 & IPv6)
# OpenDNS (IPv4 & IPv6)
#resolver 208.67.222.222 208.67.220.220 [2620:0:ccc::2] [2620:0:ccd::2];
# OpenDNS (IPv4 only)
#resolver 208.67.222.222 208.67.220.220;
# Google Public DNS (IPv4 & IPv6)
#resolver 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844];
# Google Public DNS (IPv4 only) [default]
resolver 8.8.8.8 8.8.4.4;
# CloudFlare
# List from: https://www.cloudflare.com/ips-v4
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 199.27.128.0/21;
# List from: https://www.cloudflare.com/ips-v6
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
set_real_ip_from 192.168.1.4;
# Replace with correct visitor IP
real_ip_header X-Forwarded-For;
real_ip_recursive on;
## MIME ##
include /etc/nginx/mime.types;
default_type application/octet-stream;
## Logging Settings ##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
## Gzip Settings ##
gzip on;
gzip_buffers 16 8k;
gzip_comp_level 5;
gzip_disable "msie6";
gzip_min_length 256;
gzip_proxied any;
gzip_types
application/atom+xml
application/javascript
application/json
application/ld+json
application/manifest+json
application/rss+xml
application/vnd.geo+json
application/vnd.ms-fontobject
application/x-font-ttf
application/x-javascript
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/bmp
image/svg+xml
image/x-icon
text/cache-manifest
text/css
text/javascript
text/plain
text/vcard
text/vnd.rim.location.xloc
text/vtt
text/x-component
text/x-cross-domain-policy
text/x-js
text/xml;
gzip_vary on;
# Proxy Settings
proxy_cache_path /tmp/engintron_dynamic levels=1:2 keys_zone=engintron_dynamic:20m inactive=10m max_size=500m;
proxy_cache_path /tmp/engintron_static levels=1:2 keys_zone=engintron_static:20m inactive=10m max_size=500m;
proxy_temp_path /tmp/engintron_temp;
## Virtual Host Configs ##
include /etc/nginx/conf.d/*.conf;
}
.htaccess for main website
RewriteEngine on
RewriteCond %{HTTP_HOST} ^website.com [NC]
RewriteRule ^(.*)$ http://www.website.com/$1 [R=301,L]
RewriteRule ^index.html$ index.php [L]
RewriteRule ^index19.html$ infodmca.php [L]
RewriteRule ^feed.php rss.php?r=film&l=10 [L]
RewriteRule ^confirmaccount-([0-9]+)-(.*).html?$ profile.php?a=confirm_account&u=$1&code=$2 [L]
RewriteRule ^confirmemail-([0-9]+)-(.*).html?$ login.php?a=confirm_email&u=$1&code=$2 [L]
RewriteRule ^lostpassword.html?$ login.php?a=lost_password [L]
RewriteRule ^registrer.html?$ profile.php?a=register [L]
RewriteRule ^profile/([0-9]+)/.+\.html$ profile.php?u=$1 [L]
RewriteRule ^editavatar.html?$ usercp.php?a=avatar [L]
RewriteRule ^editprofil.html?$ usercp.php?a=profile [L]
RewriteRule ^emailpassword.html?$ usercp.php?a=emailpassword [L]
RewriteRule ^modifieroptions.html?$ usercp.php?a=options [L]
RewriteRule ^usercp.html?$ usercp.php [L]
RewriteRule ^infodmca.html?$ infodmca.php [L]
RewriteRule ^infomentions.html?$ infomentions.php [L]
RewriteRule ^contacternous.html?$ contacternous.php [L]
RewriteRule ^friends.html?$ usercp.php?a=friends [L]
RewriteRule ^composemessages.html?$ privatemessages.php?a=compose [L]
RewriteRule ^messagesenvoye.html?$ privatemessages.php?f=2 [L]
RewriteRule ^privatemessages.html?$ privatemessages.php [L]
RewriteRule ^favoris.html?$ usercp.php?a=favorites [L]
RewriteRule ^posterserie/(.*)$ posterserie/$1 [L]
RewriteRule ^sitemap.xml sitemap.php?type=film [L]
RewriteRule ^tag-(.*).html$ taaags.php?tag=$1 [L]
RewriteRule ^(.*)-saison-([0-9]+)-episode-([0-9]+)-([0-9]+).htm$ episode.php?episode&id=$1&saison=$2&episode=$3&idepisode=$4 [L]
RewriteRule ^(.*)-saison-([0-9]+)-([0-9]+).htm$ saison.php?id=$1&saison=$2&idsaison=$3 [L]
RewriteRule ^serie/(.*).htm$ serie.php?id=$1 [L]
RewriteRule ^anime/(.*)/episode-(.*)-([0-9]+).htm$ episodeanime.php?id=$1&episode=$2&idepisode=$3 [L]
RewriteRule ^anime/(.*).htm$ anime.php?id=$1 [L]
RewriteRule ^series/hebergeur-(.*)/(.*)$ seriehebergeur.php?chiffre=$1&page=$2 [L]
RewriteRule ^series/hebergeur-(.*) seriehebergeur.php?chiffre=$1 [L]
RewriteRule ^series/annee-(.*)/(.*)$ seriesannee.php?chiffre=$1&page=$2 [L]
RewriteRule ^series/annee-(.*) seriesannee.php?chiffre=$1 [L]
RewriteRule ^series/alphabet/(.*)/(.*)$ seriealphabet.php?chiffre=$1&page=$2 [L]
RewriteRule ^series/alphabet/(.*) seriealphabet.php?&chiffre=$1 [L]
RewriteRule ^(.*).htm$ pagefilm.php?id=$1 [L]
RewriteRule ^alphabet/(.*)/(.*)$ alphabet.php?chiffre=$1&page=$2 [L]
RewriteRule ^nationalite/(.*)/([0-9]+)$ nationalite.php?chiffre=$1&page=$2 [L]
RewriteRule ^realisateur/(.*)/([0-9]+)$ realisateur.php?chiffre=$1&page=$2 [L]
RewriteRule ^filmsemaine/(.*)/([0-9]+)$ filmweek.php?chiffre=$1&page=$2 [L]
RewriteRule ^filmlangue/(.*)/([0-9]+)$ languefilm.php?chiffre=$1&page=$2 [L]
RewriteRule ^filmqualite/(.*)/([0-9]+)$ qualitefilm.php?chiffre=$1&page=$2 [L]
RewriteRule ^filmformat/(.*)/([0-9]+)$ formatfilm.php?chiffre=$1&page=$2 [L]
RewriteRule ^acteur/(.*)/([0-9]+)$ acteur.php?chiffre=$1&page=$2 [L]
RewriteRule ^series/nationalite/(.*)/([0-9]+)$ seriesnationalite.php?chiffre=$1&page=$2 [L]
RewriteRule ^series/acteur/(.*)/([0-9]+)$ seriesacteur.php?chiffre=$1&page=$2 [L]
RewriteRule ^filmshebergeur/uptobox$ badlinkhebergeur.php [L]
RewriteRule ^films/annee-(.*)/(.*)$ annee.php?chiffre=$1&page=$2 [L]
RewriteRule ^filmshebergeur/(.*)/(.*)$ hebergeur.php?chiffre=$1&page=$2 [L]
RewriteRule ^series/(.*)_1$ seriegenre.php?ngenre=$1 [L]
RewriteRule ^series/(.*)_(.*)$ seriegenre.php?ngenre=$1&page=$2 [L]
RewriteRule ^animes/(.*)_1$ animegenre.php?ngenre=$1 [L]
RewriteRule ^animes/(.*)_(.*)$ animegenre.php?ngenre=$1&page=$2 [L]
RewriteRule ^film-comedie$ genre.php?ngenre=comedie&page=1 [L]
RewriteRule ^film-streaming-(.*)_1$ genre.php?ngenre=$1&page=1&li=2 [L]
RewriteRule ^(.*)_1$ genre.php?ngenre=$1&page=1&li=1 [L]
RewriteRule ^(.*)_(.*)$ genre.php?ngenre=$1&page=$2 [L]
RewriteRule ^alphabet/(.*) alphabet.php?chiffre=$1 [L]
RewriteRule ^films/annee-(.*) annee.php?chiffre=$1 [L]
RewriteRule ^filmshebergeur/(.*) hebergeur.php?chiffre=$1 [L]
RewriteRule ^hebergeur-uptobox$ hebergeur.php?chiffre=uptobox [L]
RewriteRule ^ajouter_film.html index.php?go=ajouterfilms [L]
RewriteRule ^ajouter_part.html index.php?go=addpart [L]
RewriteRule ^contacternous$ index.php?go=contact [L]
RewriteRule ^demander$ demander.php [L]
RewriteRule ^logout.html login.php?a=logout [L]
RewriteRule ^inscription.html index.php?go=inscription [L]
RewriteRule ^films.html index.php?go=films [L]
RewriteRule ^topfilm(.*) index.php?page=$1 [L]
RewriteRule ^lesfilms(.*) touslesfilms.php?page=$1&li=1 [L]
RewriteRule ^film-en-streaming-p2 touslesfilms.php?page=2&li=2 [L]
RewriteRule ^film-en-streaming-p7 touslesfilms.php?page=7&li=2 [L]
RewriteRule ^film-en-streaming touslesfilms.php?page=1 [L]
RewriteRule ^series/page-(.*)$ lesseries.php?page=$1 [L]
RewriteRule ^series/ lesseries2.php [L]
RewriteRule ^series-tv/ lesseries2.php [L]
RewriteRule ^series-tv-streaming/ lesseries.php [L]
RewriteRule ^seriestv/ lesseries2.php [L]
RewriteRule ^animes/alphabet/(.*)/(.*)$ alphabetanime.php?chiffre=$1&page=$2 [L]
RewriteRule ^animes/alphabet/(.*) alphabetanime.php?&chiffre=$1 [L]
RewriteRule ^animes/populaire/page-(.*)$ populaireanime.php?page=$1 [L]
RewriteRule ^animes/populaire/ populaireanime.php [L]
RewriteRule ^animes/dernier/page-(.*)$ dernieranime.php?page=$1 [L]
RewriteRule ^animes/dernier/ dernieranime.php [L]
RewriteRule ^animes/page-(.*)$ lesanimes.php?page=$1 [L]
RewriteRule ^animes/ lesanimes.php [L]
RewriteRule ^khalid(.*) index.php?go=filmstreaminge&page=$1 [L]
RewriteRule ^(.*)lesfilmde(.*).html index.php?go=filmuser&user=$1&page=$2 [L]
RewriteRule ^prochainement.html index.php?go=prochainement [L]
RewriteRule ^prochainement(.*).html index.php?go=prochainement&page=$1 [L]
RewriteRule ^top_films.html index.php?go=top_films [L]
RewriteRule ^selection.html index.php?go=selection [L]
RewriteRule ^selection(.*).html index.php?go=selection&page=$1 [L]
RewriteRule ^rechercher search.php [L]
RewriteRule ^(.*)/([0-9]+) index.php?go=rechercher2&tags=$1&page=$2 [L]
RewriteRule ^message.html index.php?go=message [L]
RewriteRule ^member(.*).html index.php?go=member&page=$1 [L]
RewriteRule ^configuration.html index.php?go=configuration [L]
RewriteRule ^Gerer_Film(.*).html index.php?go=config_article&page=$1 [L]
RewriteRule ^editfilm(.*).html index.php?go=editfilm&id=$1 [L]
RewriteRule ^modifercomp index.php?go=modifercomp [L]
RewriteRule ^pass_oublie.html index.php?go=pass_oublie [L]
RewriteRule ^Confirmation-(.*) index.php?go=Confirmation&t=$1 [L]
RewriteRule ^auto_ajouter index.php?go=auto_ajouter [L]
RewriteRule ^(.*)/rss.xml rssgenre.php?name=$1 [L]
RewriteRule ^rss.xml rss.php?r=film&l=10 [L]
RewriteRule ^najouter(.*).html index.php?go=najouter&page=$1 [L]
RewriteRule ^marecherche(.*).html index.php?go=marecherche&page=$1 [L]
RewriteRule ^partenaire.html part.php [L]
RewriteRule ^sitemap(.*).html index.php?go=sitemape&page=$1 [L]
RewriteRule ^urllist.txt index.php?go=urliste1 [L]
ErrorDocument 404 http://www.website.com
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html