Reconfigurei o nginx, mas não consigo fazer com que ele reinicie usando a seguinte configuração:
conf:
server {
listen 80;
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location /robots.txt {
alias /path/to/robots.txt;
access_log off;
log_not_found off;
}
location = /favicon.ico { access_log off; log_not_found off; }
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_read_timeout 30;
proxy_pass http://127.0.0.1:8000;
}
location /static {
expires 1M;
alias /path/to/staticfiles;
}
}
depois de executar sudo nginx -c conf -t
para testar a configuração, o seguinte erro é retornado, eu não consigo descobrir qual é realmente o problema
nginx: [emerg] "server" directive is not allowed here in /etc/nginx/sites-available/config:1
nginx: configuration file /etc/nginx/sites-available/config test failed
Exemplo de nginx.conf válido para proxy reverso; No caso de alguem estar preso como eu
e você também pode servir no docker
fonte
O caminho para o
nginx.conf
arquivo que é o arquivo de configuração principal para Nginx - que também é o arquivo que deve INCLUIR o caminho para outros arquivos de configuração Nginx como e quando necessário/etc/nginx/nginx.conf
.Você pode acessar e editar este arquivo digitando-o no terminal
cd /etc/nginx
/etc/nginx$ sudo nano nginx.conf
Além disso, neste arquivo você pode incluir outros arquivos - que podem ter uma diretiva SERVER como um SERVER BLOCK independente - que não precisam estar dentro dos blocos HTTP ou HTTPS, conforme esclarecido na resposta aceita acima.
Repito - se você precisar que um BLOCO DE SERVIDOR seja definido no próprio arquivo de configuração PRIMARY, então esse BLOCO DE SERVIDOR terá que ser definido em um bloco HTTP ou HTTPS delimitador no
/etc/nginx/nginx.conf
arquivo que é o arquivo de configuração principal para Nginx.Observe também que está OK se você definir um BLOCO DE SERVIDOR, não envolvendo-o diretamente em um bloco HTTP ou HTTPS, em um arquivo localizado no caminho
/etc/nginx/conf.d
. Além disso, para fazer isso funcionar, você precisará incluir o caminho desse arquivo no arquivo de configuração PRIMARY, conforme mostrado abaixo: -Além disso, você pode comentar a partir do arquivo de configuração PRIMARY, a linha
e não é necessário manter nenhum arquivo de configuração
/etc/nginx/sites-available/
e também não é necessário vinculá-lo ao SYMBOLIC/etc/nginx/sites-enabled/
, observe que isso funciona para mim - no caso de alguém pensar que não é para eles ou este tipo de configuração é ilegal etc etc, por favor, deixe um comentário para que posso me corrigir - obrigado.EDITAR: - De acordo com a versão mais recente do Livro de Receitas Oficial do Nginx, não precisamos criar nenhum Configs dentro -
/etc/nginx/sites-enabled/
, esta era a prática mais antiga e está DESCONTINUADA agora.Portanto, não há necessidade de INCLUIR DIRETIVA
include /etc/nginx/sites-available/some_file.conf;
.Citação da página do Nginx CookBook - 5.
fonte
Pode haver apenas um erro de digitação em qualquer lugar dentro de um arquivo importado pelo config. Por exemplo, cometi um erro de digitação bem no fundo do meu arquivo de configuração:
(localização em vez de localização), e isso causa o erro:
fonte