Solusi 1:
Anda tidak dapat mencegah port terikat oleh layanan yang salah. Dalam kasus Anda, hapus saja apache dari autostart dan Anda akan baik-baik saja.
Untuk 16.04 dan yang lebih baru:
sudo systemctl disable apache2
Untuk versi Ubuntu yang lebih lama:
sudo update-rc.d apache2 disable
Solusi 2:
Jika Anda benar-benar tidak menggunakan apache2
, dan PHP 7.0 yang membutuhkannya, maka sepertinya Anda memiliki libapache2-mod-php7.0
diinstal. Paket itu tidak berguna tanpa Apache. Karena Anda menggunakan nginx, kemungkinan besar Anda juga memiliki php7.0-fpm
atau php7.0-cgi
diinstal, salah satunya cukup untuk memenuhi php7.0
persyaratan dependensi:
$ apt-cache depends php7.0
php7.0
|Depends: php7.0-fpm
|Depends: libapache2-mod-php7.0
Depends: php7.0-cgi
Depends: php7.0-common
Conflicts: <php5>
Jika Anda memiliki salah satu dari php7.0-{fpm,cgi}
terinstal, Anda dapat melanjutkan dan mencopot pemasangan Apache.
Solusi 3:
Untuk menjawab pertanyaan Anda, Anda mungkin dapat membatasi port ke aplikasi tertentu dengan menggunakan SElinux. Saya sendiri belum pernah menggunakannya dan hanya memiliki pengetahuan yang dangkal tentang kemampuannya, tetapi berikut adalah petunjuk yang saya temukan di situs ini:
https://serverfault.com/a/257056/392230
Dalam jawaban itu, wzzrd tampaknya menunjukkan cara memberikan izin aplikasi (foo) tertentu untuk mengikat ke port tertentu (803). Anda hanya perlu menyiapkan kebijakan sehingga hanya aplikasi Anda (nginx) yang diizinkan untuk port yang Anda tentukan (80 dan 443).
Mendasarkan diri saya pada jawaban wzzrd, mungkin sesederhana menambahkan ini ke kebijakan
allow nginx_t nginx_port_t:tcp_socket name_bind;
dan menjalankan ini
semanage port -a -t nginx_port_t -p tcp 80
semanage port -a -t nginx_port_t -p tcp 443
Meskipun demikian, saya membayangkan Anda juga memerlukan baris dalam kebijakan yang menetapkan bahwa tidak ada program lain yang dapat mengikat ke port tersebut.
Pada akhirnya, saya hanya menebak-nebak apa konfigurasi yang sesuai.
Ngomong-ngomong, saya rasa belum ada Ubuntu yang menginstal dan mengaktifkan SElinux secara default. Karena saya yakin ini memerlukan penerapan tambalan tertentu ke berbagai utilitas dan opsi kernel, mungkin lebih mudah menggunakan Centos yang telah menginstal dan mengaktifkan SElinux sejak awal.
Maaf, saya tidak bisa membantu lagi. Mungkin lain kali, saya akan mengunduh gambar Centos dan mencoba ini; itu akan menjadi langkah pembelajaran yang baik. Saya akan memperbarui jawaban ini jika saya melakukannya.
Solusi 4:
Sesuatu yang belum saya lihat di jawaban, tetapi masih ada kemungkinan:
Ubah konfigurasi Apache untuk mendengarkan port lain, untuk berjaga-jaga. Anda dapat melakukannya dengan membuka file konfigurasi Apache, dan mengubah baris yang memiliki Listen 80
ke port lain.