Řešení 1:
Nemůžete zabránit tomu, aby byl port vázán nesprávnou službou. Ve vašem případě stačí odebrat apache z automatického spuštění a měli byste být v pořádku.
Pro 16.04 a novější:
sudo systemctl disable apache2
Pro starší verze Ubuntu:
sudo update-rc.d apache2 disable
Řešení 2:
Pokud opravdu nepoužíváte apache2
, a vyžaduje to PHP 7.0, pak to vypadá, že máte libapache2-mod-php7.0
nainstalováno. Ten balíček je bez Apache k ničemu. Protože používáte nginx, pravděpodobně máte také php7.0-fpm
nebo php7.0-cgi
nainstalováno, z nichž obě jsou dostatečné pro splnění php7.0
Požadavky na závislost:
$ 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>
Pokud máte některý z php7.0-{fpm,cgi}
nainstalován, můžete pokračovat a odinstalovat Apache.
Řešení 3:
Chcete-li odpovědět na vaši otázku, pravděpodobně můžete omezit port na konkrétní aplikaci pomocí SElinux. Sám jsem to nepoužil a mám jen povrchní znalosti o jeho schopnostech, ale zde je ukazatel, který jsem našel na tomto webu:
https://serverfault.com/a/257056/392230
V této odpovědi se zdá, že wzzrd ukazuje, jak udělit konkrétní aplikaci (foo) oprávnění k navázání na konkrétní port (803). Jen byste museli mít nastavenou politiku tak, aby pouze vaše aplikace (nginx) měla povoleny porty, které určíte (80 a 443).
Na základě wzzrdovy odpovědi by to mohlo být tak jednoduché, jako přidat toto do zásad
allow nginx_t nginx_port_t:tcp_socket name_bind;
a spuštění tohoto
semanage port -a -t nginx_port_t -p tcp 80
semanage port -a -t nginx_port_t -p tcp 443
I když si myslím, že budete v zásadě potřebovat také řádek, který stanoví, že se na tyto porty nesmí vázat žádný jiný program.
Nakonec jen hádám, jaká je vhodná konfigurace.
Každopádně si nemyslím, že by existovalo Ubuntu, které by mělo ve výchozím nastavení nainstalovaný a povolený SElinux. Protože se domnívám, že to vyžaduje použití určitých záplat na různé nástroje a volbu jádra, může být jednodušší jednoduše použít Centos, který má SElinux nainstalovaný a povolený hned od začátku.
Promiň, víc ti nepomůžu. Možná někdy jindy si stáhnu obrázek Centos a vyzkouším toto; bude to dobrý krok k učení. Pokud ano, aktualizuji tuto odpověď.
Řešení 4:
Něco, co jsem v odpovědích ještě neviděl, ale stále je to možnost:
Pro jistotu změňte konfiguraci Apache tak, aby naslouchala jinému portu. Můžete to udělat otevřením konfiguračního souboru Apache a změnou řádků, které mají Listen 80
do jiného portu.