Buat tuan rumah maya, kata laluan melindungi direktori dan sijil SSL menggunakan pelayan web nginx di Arch Linux

Buat tuan rumah maya, kata laluan melindungi direktori dan sijil SSL menggunakan pelayan web nginx di Arch Linux

Artikel Arch Linux 'Lemp' sebelumnya hanya meliputi barangan asas, dari memasang Perkhidmatan Rangkaian (NGINX, Pangkalan Data MySQL dan PHPMyAdmin) dan mengkonfigurasi keselamatan minimum yang diperlukan untuk pelayan MySQL dan phpmyadmin.

Konfigurasi Nginx Berguna di Arch Linux

Topik ini sangat berkaitan dengan bekas pemasangan Lemp di Arch Linux dan akan membimbing anda melalui menetapkan konfigurasi yang lebih kompleks untuk timbunan Lemp, terutamanya Nginx Konfigurasi pelayan web, seperti membuat Tuan rumah maya, gunakan Direktori yang dilindungi kata laluan, Buat dan Konfigurasikan Lapisan soket selamat http, Http tidak selamat mengarahkan ke Https dan juga akan membentangkan beberapa skrip bash berguna yang akan memudahkan pekerjaan untuk mengaktifkan tuan rumah maya dan menjana Sijil dan kunci SSL.

Keperluan

Pasang Lemp dengan Pangkalan Data MariaDB di Arch Linux

Langkah 1: Dayakan tuan rumah maya di nginx

Salah satu kaedah paling mudah untuk membolehkan Tuan rumah maya menggunakan termasuk Kenyataan mengenai fail konfigurasi nginx utama, yang menjadikan tugas konfigurasi selanjutnya lebih mudah dan cekap kerana anda boleh membuat fail mudah untuk setiap tuan rumah baru dan menyimpan fail konfigurasi utama.

Pendekatan ini berfungsi dengan cara yang sama seperti pada Pelayan web Apache, Perkara pertama yang perlu anda lakukan ialah menentukan yang baru Uri jalan di mana nginx harus membaca arahan fail.

1. Jadi, buka nginx.Conf fail utama terletak di /etc/nginx/ Laluan Sistem dan di bahagian bawah, sebelum kurungan keriting terakhir ""Tambahkan jalan di mana fail konfigurasi hos maya masa depan akan tinggal.

$ sudo nano/etc/nginx/nginx.Conf

Di bawah Tambah pernyataan berikut.

Sertakan/etc/nginx/enabled sites/*.Con;
Dayakan tuan rumah maya di nginx

Arahan ini memberitahu Nginx ia harus membaca semua fail yang terdapat di /etc/nginx/enabled sites/ yang berakhir dengan a .Conf sambungan.

2. Langkah seterusnya adalah untuk membuat Tapak yang dibolehkan direktori dan yang lain, dipanggil Tapak-tapak tersedia, di mana anda menyimpan semua fail konfigurasi hos maya anda.

$ sudo mkdir/etc/nginx/sites-tersedia/etc/nginx/enabled sites

3. Sekarang sudah tiba masanya untuk mencipta tuan rumah maya baru. Contoh ini akan menggunakan alamat IP sistem sebagai nama hos maya, jadi buat fail baru bernama NAME-IP.Conf.

sudo nano/etc/nginx/sites-tersedia/nama-ip.Conf

Tambahkan kandungan berikut.

## kandungan fail ## pelayan mendengar 80; Server_name 192.168.1.33; Access_log/var/log/nginx/192.168.1.33.akses.log; error_log/var/log/nginx/192.168.1.33.ralat.log; root /srv /http; lokasi / indeks indeks.Indeks HTML.Indeks HTM.PHP; Autoindex ON; AUTOINDEX_EXACT_SIZE OFF; AUTOINDEX_LOCALTIME ON;  lokasi /phpmyadmin menulis semula ^ /* /phpmyadmin terakhir;  lokasi ~ \.php $ #fastcgi_pass 127.0.0.1: 9000; (Bergantung pada konfigurasi soket php-fpm anda) Fastcgi_pass unix:/run/php-fpm/php-fpm.kaus kaki; indeks fastcgi_index.PHP; Termasuk fastcgi.Con; 
Buat Hos Maya Baru

Arahan yang mengaktifkan tuan rumah maya adalah nama pelayan penyata di bawah port mendengar. Juga, satu lagi arahan penting di sini adalah akar pernyataan yang menunjukkan hos maya nginx untuk melayani kandungan fail dari /srv/http/ Laluan sistem.

4. Langkah terakhir adalah untuk mencipta /srv/http/ direktori dan buat NAME-IP.Conf Konfigurasi fail tersedia untuk bacaan nginx (menggunakan pautan simbolik), kemudian mulakan semula daemon untuk membuat konfigurasi baru kelihatan.

$ sudo mkdir/srv/http/$ sudo ln -s/etc/nginx/sites-available/name-iP.conf/etc/nginx/enabled sites/$ sudo systemctl mulakan semula nginx
Mulakan pelayan web nginx

5. Untuk mengesahkannya, arahkan penyemak imbas anda ke alamat IP sistem gerbang dan anda harus melihat bahawa kandungan web berbeza dari http: // localhost. Di sini saya telah menambah skrip PHP kecil yang juga memeriksa Fastcgi php Konfigurasi seperti dalam tangkapan skrin di bawah.

$ sudo nano/srv/http/info.php
## kandungan fail ## 
Sahkan konfigurasi php fastcgi

6. Kaedah lain yang saya telah membangunkan diri saya untuk membolehkan atau melumpuhkan tuan rumah maya di nginx adalah yang lebih elegan dan ia diilhamkan dari Apache A2eniste Skrip.

Untuk menggunakan kaedah ini buka editor fail dan buat fail baru, yang dipanggil n2ensite, pada anda $ Rumah jalan dengan kandungan di bawah, menjadikannya boleh dilaksanakan, jalankan dengan keistimewaan akar dan lulus sebagai pilihan untuk nama hos maya baru anda tanpa .Conf berakhir (isi percuma untuk mengubah suai mengikut keperluan anda).

$ sudo nano n2ensite
## kandungan fail ## #!/bin/bash jika test -d/etc/nginx/sites -available && test -d/etc/nginx/sites -enabled; kemudian echo "----------------------------------------------- "lain-lain mkdir/etc/nginx/tapak yang tersedia mkdir/etc/nginx/enabled fi fi avail =/etc/nginx/sites-available/$ 1.conf enabled =/etc/nginx/sites-enabled/site = "ls/etc/nginx/sites-available/" if ["$#" != "1"]; kemudian echo "Gunakan skrip: n2ensite virtual_site" echo -e "\ navailable hosts: \ n $ site" exite 0 else if test -e $ avail; maka sudo ln -s $ avail $ enabled else echo -e "$ avail maya host tidak wujud! Sila buat satu!\ n $ site "Exit 0 fi if test -e $ enabled/$ 1.Con; kemudian echo "kejayaan!! Sekarang mulakan semula pelayan nginx: SUDO Systemctl Mulakan semula nginx "else echo -e" host maya $ avail tidak wujud!\ nplease Lihat Hos Maya Tersedia: \ N $ Site "Exit 0 Fi Fi
Gunakan skrip A2eniste

Jadikannya boleh dilaksanakan dan jalankan sebagai persembahan.

$ sudo chmod +x n2ensite $ sudo ./n2ensite your_virtual_host
Dayakan tuan rumah maya

7. Untuk melumpuhkan tuan rumah maya mencipta yang baru n2dissite fail dengan kandungan berikut dan gunakan tetapan yang sama seperti di atas.

$ sudo nano n2dissite
## kandungan fail ## #!/bin/bash avail =/etc/nginx/sites-enabled/$ 1.conf enabled =/etc/nginx/sites-enabled site = "ls/etc/nginx/sites-enabled/" if ["$#" != "1"]; kemudian echo "Gunakan skrip: n2dissite virtual_site" echo -e "\ navailable hosts maya: \ n $ site" Exit 0 else if test -e $ avail; maka sudo rm $ availy else echo -e "$ avail maya host tidak wujud! Keluar!"Keluar 0 fi jika ujian -e $ diaktifkan/$ 1.Con; kemudian echo "ralat!! Tidak dapat mengeluarkan host maya $ avail $!kejayaan "lain echo -e"! $ avail telah dikeluarkan!\ nplease Restart nginx: Sudo Systemctl Restart Nginx "Exit 0 fi fi
Lumpuhkan tuan rumah maya

8. Sekarang anda boleh menggunakan dua skrip ini untuk membolehkan atau melumpuhkan mana -mana hos maya tetapi jika anda mahu memohonnya sebagai perintah luas sistem hanya menyalin kedua -dua skrip ke /usr/tempatan/bin/ dan kemudian anda boleh menggunakannya tanpa menentukan jalan.

$ sudo cp n2ensite n2dissite/usr/local/bin/
Gunakan skrip n2ensite untuk membolehkan atau melumpuhkan tuan rumah

Langkah 2: Dayakan SSL dengan tuan rumah maya di nginx

SSL (Lapisan soket selamat) adalah protokol yang direka untuk menyulitkan sambungan HTTP melalui rangkaian atau internet, yang membuat aliran data dihantar melalui saluran selamat menggunakan kekunci kriptografi simetri/asimetrik dan disediakan di Arch Linux oleh Pakej OpenSSL.

$ sudo pacman -s openssl
Pasang pakej OpenSSL

9. Untuk membolehkan sambungan HTTPS dengan nginx yang pertama berfikir yang perlu anda lakukan adalah untuk menghasilkan kunci tuan rumah maya. Juga, untuk mempermudahkan perkara, saya telah membangunkan skrip kecil yang secara automatik menjana kekunci kriptografi /etc/nginx/ssl Laluan direktori, menggunakan penamaan hos maya sebagai nama utama.

Buat fail yang dinamakan nginx_gen_ssl dan tambahkan kandungan berikut.

$ sudo nano nginx_gen_ssl
## kandungan fail ## #!/bin/bash mkdir/etc/nginx/ssl cd/etc/nginx/ssl echo -e "Masukkan host maya anda fqdn: \ nthis akan menghasilkan nama lalai untuk sijil ssl nginx!"Baca Cert OpenSSL Genpkey -Algorithm RSA -PKEYOPT RSA_KEYGEN_BITS: 2048 -out $ CERT.Key Chmod 600 $ Cert.Kunci OpenSSL Req -New -Key $ Cert.Kunci -Out $ Cert.CSR OpenSSL X509 -REQ -Days 365 -in $ CERT.CSR -SignKey $ Cert.Kunci -Out $ Cert.CRT ECHO -E "Sijil $ sijil telah dihasilkan!\ nlease pautan ke laman web nginx ssl yang tersedia!"ls -all/etc/nginx/ssl exit 0
Menjana kunci tuan rumah maya

10. Selepas skrip telah dibuat keizinan pelaksanaan tambahan, jalankan dan berikan pilihan sijil anda, yang paling penting adalah Nama yang selalu digunakan medan (tambahkan nama domain rasmi di sini) dan tinggalkan kata laluan dan medan syarikat pilihan kosong.

$ sudo chmod +x nginx_gen_ssl $ sudo ./nginx_gen_ssl
Tetapkan EXISIONS Menjana kekunci SSL

Pada akhir tugas menghasilkan kunci, penyenaraian dengan semua kekunci yang tersedia di bawah direktori ssl nginx akan dipaparkan.

Senaraikan semua kekunci yang ada

Juga jika anda mahu skrip ini digunakan sebagai arahan sistem, menyalin atau memindahkannya ke /usr/tempatan/bin/.

$ sudo mv nginx_gen_ssl/usr/local/bin

11. Setelah kami menghasilkan kekunci yang diperlukan untuk tuan rumah maya nginx SSL sudah tiba masanya untuk membuat fail konfigurasi hos maya SSL. Gunakan alamat IP sistem yang sama untuk tuan rumah maya seperti di atas nama pelayan arahan tetapi, sedikit menukar nama fail hos maya dengan menambahkan SSL sebelum ini .Conf, untuk mengingatkan anda bahawa fail ini bermaksud NAME-IP SSL Host Virtual.

$ sudo nano/etc/nginx/sites-availabe/name-ip-ssl.Conf

Pada perubahan fail ini Dengarkan penyataan port ke 443 SSL dan sediakan laluan fail utama SSL dan sijil dengan yang dibuat lebih awal untuk kelihatan seperti di bawah petikan.

## kandungan fail ## Server Dengar 443 SSL; Server_name 192.168.1.33; ssl_certificate/etc/nginx/ssl/192.168.1.33.CRT; ssl_certificate_key/etc/nginx/ssl/192.168.1.33.kunci; ssl_session_cache dikongsi: ssl: 1m; ssl_session_timeout 5m; ssl_ciphers tinggi:!Anull:!MD5; SSL_PREFER_SERVER_CIPHERS ON; Access_log/var/log/nginx/192.168.1.33-SSL.akses.log; error_log/var/log/nginx/192.168.1.33-SSL.ralat.log; root /srv /http; lokasi / indeks indeks.Indeks HTML.Indeks HTM.PHP; Autoindex ON; AUTOINDEX_EXACT_SIZE OFF; AUTOINDEX_LOCALTIME ON;  lokasi /phpmyadmin menulis semula ^ /* /phpmyadmin terakhir;  lokasi ~ \.php $ #fastcgi_pass 127.0.0.1: 9000; (Bergantung pada konfigurasi soket php-fpm anda) Fastcgi_pass unix:/run/php-fpm/php-fpm.kaus kaki; indeks fastcgi_index.PHP; Termasuk fastcgi.Con; 
Buat tuan rumah maya SSL

12. Selepas fail telah dibuat penggunaan n2ensite skrip atau Ln baris arahan untuk mengaktifkannya (mewujudkan pautan simbolik fail di Tapak yang dibolehkan direktori), kemudian mulakan semula daemon nginx untuk memohon tetapan.

$ sudo ./n2ensite name-ip-ssl atau $ sudo ln -s/etc/nginx/sites-available/name-ip-ssl.conf/etc/nginx/enabled sites/$ sudo systemctl mulakan semula nginx
Tuan rumah maya SSL aktif

13. Sekali lagi tunjuk penyemak imbas anda ke Arch IP URL Tetapi kali ini menggunakan protokol HTTPS - https: // 192.168.1.33 pada sistem saya- dan a Sambungan tidak dipercayai Kesalahan keselamatan harus muncul ( Tambah dan sahkan pengecualian keselamatan untuk pergi lebih jauh di halaman).

Sahkan sambungan HTTPS Sahkan kandungan tuan rumah maya Sahkan konfigurasi PHP

Seperti yang anda dapat melihat hos maya nginx anda melayani kandungan yang sama seperti sebelumnya NAME-IP tuan rumah tetapi kali ini menggunakan sambungan selamat HTTP.

Langkah 3: Akses phpmyadmin melalui tuan rumah maya

Sekiranya tuan rumah maya didayakan pada nginx, kita tidak lagi mempunyai akses ke http: // localhost Kandungan Laluan (Localhost biasanya melayani kandungan menggunakan alamat IP loopback atau alamat IP sistem jika tidak dikonfigurasi sebaliknya) kerana kami telah menggunakan IP sistem gerbang sebagai nama pelayan Jadi laluan kandungan kami telah berubah.

14. Kaedah paling mudah untuk mendapatkan akses ke Phpmyadmin melalui web adalah untuk mewujudkan hubungan simbolik antara /usr/share/webapps/phpmyadmin/ jalan dan laluan tuan rumah maya yang baru kami (/srv/http).

$ sudo ln -s/usr/share/webapps/phpmyadmin//srv/http/

15. Selepas anda melaksanakan arahan di atas, muat semula halaman anda dan anda akan melihat phpmyadmin folder baru muncul, jika AutoIndex penyataan yang didayakan pada hos maya nginx atau arahkan URL anda terus ke folder phpmyadmin https: // arch_ip/phpmyadmin.

16. Sekiranya anda ingin membersihkan rentetan phpmyadmin pada pelayar edit fail host maya anda dan tambahkan kandungan berikut di bawah blok pelayan.

lokasi /phpmyadmin menulis semula ^ /* /phpmyadmin terakhir; 
Akses phpmyadmin melalui tuan rumah maya

Langkah 4: Dayakan direktori dilindungi kata laluan di nginx

Tidak seperti Apache, Nginx menggunakan Httpauthbasic modul untuk membolehkan Direktori yang dilindungi kata laluan tetapi tidak memberikan alat untuk membuat yang disulitkan .htpasswd fail.

17. Untuk mencapai perlindungan kata laluan direktori dengan nginx di arch linux memasang pelayan web Apache dan gunakan alatnya untuk menghasilkan yang disulitkan .Htaccess fail.

$ sudo pacman -s Apache

18. Setelah anda memasang Apache, buat direktori baru di bawah /etc/nginx/ Dinamakan secara intuitif Passwd di mana .htpasswd fail akan disimpan dan digunakan htpasswd perintah dengan -c Hidupkan pengguna ditambah pertama untuk menjana fail, maka jika anda ingin menambah lebih banyak pengguna menggunakan htpasswd tanpa -c suis.

$ sudo mkdir/etc/nginx/passwd $ sudo htpasswd -c/etc/nginx/passwd/.htpasswd first_user $ sudo htpasswd/etc/nginx/passwd/.htpasswd second_user $ sudo htpasswd/etc/nginx/passwd/.htpasswd third_user
Dayakan direktori yang dilindungi kata laluan

19. Untuk melindungi NAME-IP-SSL Root host maya /srv/http/ Laluan yang disajikan dengan semua sub folder dan failnya di bawahnya tambahkan arahan berikut di dalam blok pelayan hos maya anda di bawah Arahan Root dan arahkannya kepada mutlak .htpasswd laluan fail.

auth_basic "Laman Web Terhad"; auth_basic_user_file/etc/nginx/passwd/.htpasswd;
Konfigurasi Laman Web Terhad

20. Setelah anda memulakan semula perkhidmatan Nginx, menyegarkan halaman dan Pengesahan diperlukan Popup sepatutnya kelihatan menuntut kelayakan anda.

Pengesahan diperlukan

Sekarang anda telah berjaya mengaktifkan nginx Direktori yang dilindungi kata laluan Tetapi sedar bahawa pada masa yang sama Apache Web Server dipasang dalam sistem anda jadi pastikan ia tetap dilumpuhkan dan dengan cara apa pun tidak memulakannya kerana boleh membawa kepada pelabuhan yang bertentangan dengan nginx.

Langkah 5: Redirect http ke https di nginx

21. Sekiranya anda suka untuk penyemak imbas secara automatik mengalihkan semua permintaan HTTP yang tidak selamat ke protokol HTTPS terbuka dan edit anda Bukan SSL Tuan rumah maya dan tambahkan arahan berikut di bawah nama pelayan arahan.

Tulis semula ^ https: // $ server_name $ request_uri? kekal;
Redirect http ke https

Semua tetapan yang dibentangkan pada artikel ini di mana dibuat di bawah Arch Linux Sistem yang bertindak sebagai pelayan, tetapi kebanyakannya, terutama yang berkaitan dengan fail konfigurasi nginx, boleh didapati di kebanyakan sistem Linux dengan sedikit perbezaan.