Czy istnieje sposób na współdzielenie dyrektyw konfiguracyjnych przez dwa server {}
bloki nginx ? Chciałbym uniknąć powielania reguł, ponieważ zawartość HTTPS i HTTP mojej witryny jest obsługiwana z taką samą konfiguracją.
Obecnie wygląda to tak:
server {
listen 80;
...
}
server {
listen 443;
ssl on; # etc.
...
}
Czy mogę zrobić coś w stylu:
server {
listen 80, 443;
...
if(port == 443) {
ssl on; #etc
}
}
Aby wyjaśnić przyjętą odpowiedź, musisz ją pominąć
i potrzebujesz tylko następujących wersji dla wersji nginx po wersji 0.8.21
Odniesienie:
Dokumenty Nginx - Konfigurowanie pojedynczego serwera HTTP / HTTPS
źródło
Nie znam sposobu takiego jak sugerujesz, ale z pewnością jest to łatwy i łatwy do utrzymania sposób.
Przenieś wspólne ustawienia serwera do osobnego pliku, tj. „ServerFoo.conf”, a następnie
include
w osobnychserver {}
blokach, tak jak to:źródło
server_name
jest inny dla każdego portulisten 443 ssl;
od teraz jednego.listen
linie nie są poprawnie interpretowane, ale przeniesienie ich do osobnychserver{}
naprawia.Poniżej obszerniejszy przykład stanowi rozwinięcie już pomocnych odpowiedzi:
źródło
Aby dodać do posta Igora / Jaudera, jeśli słuchasz określonego adresu IP, możesz użyć:
źródło