Begini Settingan Plugin ByREV WP-PicShield di Nginx

Pertanyaan:

Saya punya web wallpaper, dan baru beralih ke VPS, saya sudah mengikuti semua tutorial tentang cara setting VPS dari awal.

Setelah situs berhasil live, ada masalah. Yaitu plugin ByREV WP-PicShield tidak bekerja. Bagaimana settingan plugin ByREV WP-PicShield untuk Webserver Nginx?

Solusi:

Plugin membahayakan bernama ByREV WP-PicShield adalah plugin andalan para pemain web wallpaper. Dulu ini adalah plugin andalan saya, namun plugin ini sudah saya pensiunkan di web utama saya karena plugin ini membuat web saya deindex sebagian.

Meskipun begitu, saya juga masih pake di web-web kecil yang sampai sekarang masih aman. Malah web pembuat plugin ini sampai sekarang pun masih aman.

Konfigurasi Nginx untuk Plugin ByREV WP-PicShield

Plugin ini bekerja penuh pada web server Apache, karena erat berhubungan dengan file bernama .htaccess. Sementara itu, Nginx ngga mengenal .htaccess, meskipun demikian, plugin tetap bisa kita gunakan di Nginx dengan beberapa settingan.

Langkah-langkahnya adalah sebagai berikut.

Edit server block Nginx, biasanya ada di /etc/nginx/sites-available/ . Misal file server blok saya adalah example.com.vhost maka edit dengan perintah vi /etc/nginx/sites-available/example.com.vhost.

Isinya adalah seperti ini

server {
	listen 80;

	root /var/www/example.com;
	index index.html index.htm index.php;

	server_name example.com;

	location / {
		try_files $uri $uri/ /index.php?$args;
	}

	location ~ \.php$ {
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}

}

Tambahkan settingan WP-PicShield untuk Nginx dengan menambahkan kode di bawah, tepat di atas tanda } (akhir baris). Kodenya adalah

	
	if ($uri ~* ".(jpg|jpeg|png|gif)$"){
	set $rule_0 1$rule_0;
	}
	if ($remote_addr !~* "^(127.0.0.1|12.34.56.78)$"){
	set $rule_0 2$rule_0;
	}
	if ($remote_addr !~* "^66.6.(32|33|36|44|45|46|40)."){
	set $rule_0 3$rule_0;
	}
	if ($http_referer !~* 
	"^http(s)?://(www.)?(example.com|translate.google.com|translate.googleusercontent.com|www.microsofttranslator.com|pinterest.com|tumblr.com|facebook.com|plus.google|twitter.com|googleapis.com|googleusercontent.com|ytimg.com|gstatic.com)"){
	set $rule_0 4$rule_0;
	}
	if ($http_user_agent !~* 
	"(googlebot|msnbot|baiduspider|slurp|webcrawler|teoma|photon|facebookexternalhit|facebookplatform|pinterest|feedfetcher|ggpht)"){
	set $rule_0 5$rule_0;
	}
	if ($http_user_agent !~* 
	"(photon|smush.it|akamai|cloudfront|netdna|bitgravity|maxcdn|edgecast|limelight|tineye)"){
	set $rule_0 6$rule_0;
	}
	if ($http_user_agent !~* 
	"(developers|gstatic|googleapis|googleusercontent|google|ytimg)"){
	set $rule_0 7$rule_0;
	}
	if ($rule_0 = "7654321"){
	rewrite /(.*) /byrev-wp-picshield.php?key=abcdefghi&src=$1 last;
	}

Keterangan:
Ada 3 buah kode yang harus diganti.

  1. Di baris 4, ganti 12.34.56.78 dengan IP VPS.
  2. Di baris 11 yang ada kode "^http(s)?://(www.)?...dst, ganti example.com dengan domain yang dipasangi plugin ini.
  3. Di baris kedua terakhir, ganti abcdefghi dengan kode yang bisa kita dapat di settingan plugin tersebut http://example.com/wp-admin/options-general.php?page=byrev_picshield_admin. Kalau di skrinsut, yang ini:

    by-rev-wp-picshield-settings-for-nginx

Sehingga tampilan lengkap server blok setelah penambahan settingan tersebut menjadi:

server {
	listen 80;

	root /var/www/example.com;
	index index.html index.htm index.php;

	server_name example.com;

	location / {
		try_files $uri $uri/ /index.php?$args;
	}

	location ~ \.php$ {
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}

	if ($uri ~* ".(jpg|jpeg|png|gif)$"){
	set $rule_0 1$rule_0;
	}
	if ($remote_addr !~* "^(127.0.0.1|12.34.56.78)$"){
	set $rule_0 2$rule_0;
	}
	if ($remote_addr !~* "^66.6.(32|33|36|44|45|46|40)."){
	set $rule_0 3$rule_0;
	}
	if ($http_referer !~* 
	"^http(s)?://(www.)?(example.com|translate.google.com|translate.googleusercontent.com|www.microsofttranslator.com|pinterest.com|tumblr.com|facebook.com|plus.google|twitter.com|googleapis.com|googleusercontent.com|ytimg.com|gstatic.com)"){
	set $rule_0 4$rule_0;
	}
	if ($http_user_agent !~* 
	"(googlebot|msnbot|baiduspider|slurp|webcrawler|teoma|photon|facebookexternalhit|facebookplatform|pinterest|feedfetcher|ggpht)"){
	set $rule_0 5$rule_0;
	}
	if ($http_user_agent !~* 
	"(photon|smush.it|akamai|cloudfront|netdna|bitgravity|maxcdn|edgecast|limelight|tineye)"){
	set $rule_0 6$rule_0;
	}
	if ($http_user_agent !~* 
	"(developers|gstatic|googleapis|googleusercontent|google|ytimg)"){
	set $rule_0 7$rule_0;
	}
	if ($rule_0 = "7654321"){
	rewrite /(.*) /byrev-wp-picshield.php?key=abcdefghi&src=$1 last;
	}

}

Save kalau semua sudah sesuai lalu reload konfigurasi nginx dengan perintah service nginx reload.

Dengan begitu, plugin WP-PicShield yang diinstall di situs WordPress yang menggunakan web server Nginx dapat bekerja dengan baik.

Jika ada yang kurang jelas, silahkan gunakan komentar.

38 thoughts on “Begini Settingan Plugin ByREV WP-PicShield di Nginx

      • Wih keren replynya cepet, makasih Om 😀

        Kalo boleh tau nama themenya apa ya? Ane nyoba beberapa theme dari admin panel WP tapi ga ada yang auto generate keterangan kayak gitu…

        Trus untuk penempatan iklan adsense yang bagus ditaruh di mana aja n jenis apa adsnya?

        • Saya belum pernah nemu theme wallpaper di direktori wordpress.org. Jadi theme wallpaper itu kebanyakan dijual di forum-forum. Coba ke ads.id ke bagian penjualan theme banyak seller menawarkan theme wallpaper. Mengenai iklan juga sudah disesuaikan oleh pembuat theme, tinggal masukan kode iklan maka theme akan muncul otomatis. Theme masa kini bagus yang responsif / adaptif dan umumnya iklan yang bagus di tepat di atas / bawah gambar. Iklannya yang responsive juga & ukuran utk desktop minimal 728×90 pixel yang mobile tentu akan ikutin. Namun hati2 tampilan iklan jangan terlalu nge-blend dengan theme karena berdampak pada banned AdSense.

    • Saya ngga tau kalo Shared. Berhubung server mas tipe nya Shared, saran saya minta tolong Support aja, apakah bisa edit virtual host / server block web mas dengan menambahkan kode di atas.

    • (Ini hanya gambaran saja saya belum pernah coba install plugin ini di WPMU) Sepertinya ada sedikit perbedaan. Misal kalo distro Debian bisa dengan cara membuat suatu file bernama picshield.conf simpan di direktori /etc/nginx/conf.d/. File tsb berisi settingan di atas dan nama domain harus ditambah semua (bukan hanya 1), lalu reload / restart Nginx. kode abcdefghi juga harus sama untuk semua domain. CMIIW.

  1. Kang, sudah 2x hapus and entry lagi masih tetep sama belum nge-redirect ke website nya masih masuk ke folder gambar. Gimana cara nya?

    • Ini distro Linux nya apa? Pengalaman saya kalo Debian 8 atau Ubuntu 14.xx ke atas plugin ByREV WP-PicShield tidak bisa jalan. Plugin ini bekerja sempurna di Debian 7 dan CentOS 5 atau 6 atau OS lain yang pernah saya coba: FreeBSD.

      Solusi lain:

      1. Pastikan kode akhir server blok sudah sesuai dengan yang saya jelaskan di atas dan ganti 3 bagian (domain, IP address VPS, abcdefghi). Setelah semua sesuai, reload nginx: service nginx reload
      2. Clear Cache + Cookies, clear sebersih-bersihnya.
      3. Coba pake di Browser lain.

      Kalo mau pindah ke Debian 7, tutorial setting WordPress di Debian 7 pernah saya bahas di forum, link-nya ada di trit setting VPS yang ini.

  2. alternatif selain plugin ini apa mas? apa masnya bikin sistem buat redirect sendiri ato malah nda make redirect..? apalagi masnya bilanh udah pensiunin ini plugin. suwun

  3. Mz Hardinal mw tanya,
    1. cara mengetahui file server blog gimana y?
    2. kemudian apabila lebih dari satu blog dalam 1 vps gmn caranya y? soalnya di paparan yang mz jelaskan untuk kode gtfo cmn 1 yaitu abcdefghi padahal masing2 blog berbeda kode gtfonya.
    3. Example.com ini kalo mw diganti lebih dari satu blog format penulisannya gmn y?

    Makasih sebelumnya mz

    • Mhn maaf baru balas, mas Oki.

      1. Kurang jelas pertanyaanya, “mengetahui file server blog”
      2. Mas masuk ke Dashboard tiap blog / domain mas, lalu isikan (update) dan seragamkan semua kode di tiap-tiap domain yang mas punya. Misal ada domain.com dan domain.net. Di domain.com, kodenya ‘abcdefgh’ maka mas harus login ke Dashboard domain.net, ganti kode yang ada dengan ‘abcdefgh’.
      3. example.com, ganti lebih dari 1 blog… kurang jelas juga pertanyaannya, maksudnya gimana ya?

  4. selamt malam gan, sebelumnya maaf salah kamar. soalnya mau tanya di menu hubungi saya nggak bisa untuk ngirim pesan. sekali lagi mohon maaf…. ane mau tanya cara setting blog wallpaper, agar tidak bisa discrape oleh aplikasi, misal saja pakai aplikasi Bulk Image Downloader. aplikasi BID itu kan bisa untuk scrape gambar dari url website, nah cara untuk melindungi web agar tidak bisa discrape bagaimana ya, contohnya seperti website wallpaper http://www.hdwallpapers.in/ web tersebut kalau didownload filenya hanya berukuran dibawah 100kb jd bukan ukuran file asli yang dapat discrape, bahkan ada yang saya lupa nama website wallpapernya kalau discrape itu tidak bisa sama sekali. cara untuk seperti yang saya ceritakan itu bagaiman ya gan, mohon info dan pencerahannya..

    • Sepengetahuan saya, semua yang bisa diakses langsung oleh browser (Firefox, Chrome) PASTI bisa di scrape. Mengenai BID saya tidak tau seperti apa kerjanya, kemungkinan BID tidak menggunakan fasilitas ‘referer’ sehingga yang ada di web hdwallpapers.in gagal di scrape. Jadi mohon maaf saya tidak punya solusi untuk ini.

      Contoh mudah, coba mas install Internet Download Manager lalu download gambar ini

      www dot hdwallpapers dot in/download/the_hunger_games_katniss_everdeen-3840×2160.jpg

      Saya sudah mencoba dan berhasil. Artinya, gambar yang ada di hdwallpapers.in berhasil saya download pake IDM, kalo misal link URL nya banyak, kemungkinan akan bisa didownload juga.

  5. saya pake nginx, wp pichshielny jalan, tp hanya ke attachment, saya udah setting ke single post, tp tetap jalan ke attachment. ada solusi g om?

    • Kode di atas, tinggal dicopy paste ke server block nya web kang Aditya. Sepengetahuan saya server block untuk EE lokasinya ada di /etc/nginx/sites-available/ . Coba di cek, akan ada nama domain kang aditya. Silahkan copas kode di atas dan tempatkan sebelum tanda kurung tutup kurawal terakhir. Save file nya kalo sudah di edit dan jalankan service nginx reload

  6. Kang,

    Masih belum bisa dan tampilannya berbeda dengan yg Akang jelaskan :

    server {
    	server_name example.com   www.example.com;
    	access_log /var/log/nginx/example.com.access.log rt_cache; 
    	error_log /var/log/nginx/example.com.error.log;
    	root /var/www/example.com/htdocs;
    	index index.php index.html index.htm;
    

    Ini isinya punya EE. Mohon dibantu lagi Kang. Nuhun..

    • Tambahkanm kode di bawah, setelah kode index index.php index.html index.htm;:

      	if ($uri ~* ".(jpg|jpeg|png|gif)$"){
      		set $rule_0 1$rule_0;
      	}
      	if ($remote_addr !~* "^(127.0.0.1|12.34.56.78)$"){
      		set $rule_0 2$rule_0;
      	}
      	if ($remote_addr !~* "^66.6.(32|33|36|44|45|46|40)."){
      		set $rule_0 3$rule_0;
      	}
      	if ($http_referer !~* 
      	"^http(s)?://(www.)?(example.com|translate.google.com|translate.googleusercontent.com|www.microsofttranslator.com|pinterest.com|tumblr.com|facebook.com|plus.google|twitter.com|googleapis.com|googleusercontent.com|ytimg.com|gstatic.com)"){
      		set $rule_0 4$rule_0;
      	}
      	if ($http_user_agent !~* 
      		"(googlebot|msnbot|baiduspider|slurp|webcrawler|teoma|photon|facebookexternalhit|facebookplatform|pinterest|feedfetcher|ggpht)"){
      		set $rule_0 5$rule_0;
      	}
      	if ($http_user_agent !~* 
      		"(photon|smush.it|akamai|cloudfront|netdna|bitgravity|maxcdn|edgecast|limelight|tineye)"){
      		set $rule_0 6$rule_0;
      	}
      	if ($http_user_agent !~* 
      		"(developers|gstatic|googleapis|googleusercontent|google|ytimg)"){
      		set $rule_0 7$rule_0;
      	}
      	if ($rule_0 = "7654321"){
      		rewrite /(.*) /byrev-wp-picshield.php?key=abcdefghi&src=$1 last;
      	}
      

      Jadi kode nya akan seperti ini

      server {
      	server_name example.com   www.example.com;
      	access_log /var/log/nginx/example.com.access.log rt_cache; 
      	error_log /var/log/nginx/example.com.error.log;
      	root /var/www/example.com/htdocs;
      	index index.php index.html index.htm;
      
      	if ($uri ~* ".(jpg|jpeg|png|gif)$"){
      		set $rule_0 1$rule_0;
      	}
      	if ($remote_addr !~* "^(127.0.0.1|12.34.56.78)$"){
      		set $rule_0 2$rule_0;
      	}
      	if ($remote_addr !~* "^66.6.(32|33|36|44|45|46|40)."){
      		set $rule_0 3$rule_0;
      	}
      	if ($http_referer !~* 
      	"^http(s)?://(www.)?(example.com|translate.google.com|translate.googleusercontent.com|www.microsofttranslator.com|pinterest.com|tumblr.com|facebook.com|plus.google|twitter.com|googleapis.com|googleusercontent.com|ytimg.com|gstatic.com)"){
      		set $rule_0 4$rule_0;
      	}
      	if ($http_user_agent !~* 
      		"(googlebot|msnbot|baiduspider|slurp|webcrawler|teoma|photon|facebookexternalhit|facebookplatform|pinterest|feedfetcher|ggpht)"){
      		set $rule_0 5$rule_0;
      	}
      	if ($http_user_agent !~* 
      		"(photon|smush.it|akamai|cloudfront|netdna|bitgravity|maxcdn|edgecast|limelight|tineye)"){
      		set $rule_0 6$rule_0;
      	}
      	if ($http_user_agent !~* 
      		"(developers|gstatic|googleapis|googleusercontent|google|ytimg)"){
      		set $rule_0 7$rule_0;
      	}
      	if ($rule_0 = "7654321"){
      		rewrite /(.*) /byrev-wp-picshield.php?key=abcdefghi&src=$1 last;
      	}
      
      Dan seterusnya (kode2 lainnya)
      

      Sesuaikan example.com, 12.34.56.78 dan abcdefgh. Serta jangan sampai terhapus bagian “Dan seterusnya (kode2 lainnya)”.

  7. server {
    	server_name example.com   www.example.com;
    	access_log /var/log/nginx/example.com.access.log rt_cache; 
    	error_log /var/log/nginx/example.com.error.log;
    	root /var/www/example.com/htdocs;
    	index index.php index.html index.htm;
    
    	if ($uri ~* ".(jpg|jpeg|png|gif)$"){
    		set $rule_0 1$rule_0;
    	}
    	if ($remote_addr !~* "^(127.0.0.1|myipvps)$"){
    		set $rule_0 2$rule_0;
    	}
    	if ($remote_addr !~* "^66.6.(32|33|36|44|45|46|40)."){
    		set $rule_0 3$rule_0;
    	}
    	if ($http_referer !~* 
    		"^http(s)?://(www.)?(example.com|translate.google.com|translate.googleusercontent.com|www.microsofttranslator.com|pinterest.com|tumblr.com|facebook.com|plus.google|twitter.com|googleapis.com|googleusercontent.com|ytimg.com|gstatic.com)"){
    		set $rule_0 4$rule_0;
    	}
    	if ($http_user_agent !~* 
    		"(googlebot|msnbot|baiduspider|slurp|webcrawler|teoma|photon|facebookexternalhit|facebookplatform|pinterest|feedfetcher|ggpht)"){
    		set $rule_0 5$rule_0;
    	}
    	if ($http_user_agent !~* 
    		"(photon|smush.it|akamai|cloudfront|netdna|bitgravity|maxcdn|edgecast|limelight|tineye)"){
    		set $rule_0 6$rule_0;
    	}
    	if ($http_user_agent !~* 
    		"(developers|gstatic|googleapis|googleusercontent|google|ytimg)"){
    		set $rule_0 7$rule_0;
    	}
    	if ($rule_0 = "7654321"){
    		rewrite /(.*) /byrev-wp-picshield.php?key=gtfokey&src=$1 last;
    	}
    
    	include common/w3tc.conf;	  
    	include common/wpcommon.conf;
    	include common/locations.conf;
    	include /var/www/example.com/conf/nginx/*.conf;
    }
    

    Itu sudah benar belum Kang, sy coba msh belum bisa jalan. Tolong dibantu koreksi Kang. Nuhun..

    • Iya, sudah betul itu seperti itu. Tinggal jalankan service nginx reload lalu clear cache + cookie browser (atau bisa di browser lain) lalu coba lagi, harusnya bekerja dengan baik.

      Kalau masih tidak bekerja pastikan tidak ada plugin cache di wordpress kang aditya. Kalo pake CloudFlare, pastika si CloudFlare nya di purge cache dulu. Kalau masih tidak bisa, coba cek access / error log nya apa katanya, nanti akan ketahuan salah nya di mana.

  8. Kang, masih juga. Plugin w3 nya sdh sy non aktifkan, sudah purge di CloudFlare namun belum bisa juga. Ada saran lain Kang?

  9. gannn ane baru instal plugin WP-PICShield.. tapu liat tutorial dari agan kok otak ane gak nyampe hahaha…
    cara masuk ke scrip yang agan maksudkan sih gimana? ane pemain baru gan di web, n langsung terjun ke web wallpaper…. udah 4 bulan trafic-nya memprihatinkan.. 1 hari cupa dapet 500 perak.. hikss..
    bisa bantu gan cara setting yang bisa di menerti otak ane hahha? maaf sebelumnya..

  10. gannn baru nyadar web ane pake debian 8,, kira2 selain plugin ByRev WP-PICShield adala plugin lain gk gan?
    soalnya web ane web wallpaper… jadi kya wajib hukumnya pake plugin sejenis ByRev WP-PICShield… mohon pencerahnya gan ane masih newbie…

  11. kalo saya malah eror gini mas:
    [emerg] “if” directive is not allowed here in /www/server/panel/vhost/nginx/www.domain.com.conf:63

    saya pake aapanel.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.