Não é possível iniciar o nginx após a configuração como servidor proxy reverso

0

Estou tentando configurar meu nginx como um servidor proxy reverso.

Eu tenho jenkins e nginx instalados no mesmo servidor. Estou tentando acessar o jenkins na porta 82 em vez da porta 8080.

Para isso, o que eu fiz até agora é

  1. Vá para /etc/nginx/conf.d e crie um novo arquivo com, por exemplo: 'forward_jenkins.conf'
  2. Conteúdo do forward_jenkins.conf. (Este é um trecho aleatório que eu encontrei na internet.)

    server {
      listen 82;
      server_name foobar.net;
    
      location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
      }
    }
    
  3. Salve o arquivo e inicie o nginx.

Abaixo está o erro que recebo

[root@localhost conf.d]# systemctl start nginx
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

Eu também tentei o comando abaixo.

[root@localhost conf.d]# nginx -t -c /etc/nginx/conf.d/forward_jenkins.conf
nginx: [emerg] "server" directive is not allowed here in /etc/nginx/conf.d/forward_jenkins.conf:1
nginx: configuration file /etc/nginx/conf.d/forward_jenkins.conf test failed

Eu não modifiquei nada no meu arquivo nginx.conf

[root@localhost nginx]# cat nginx.conf

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2 default_server;
#        listen       [::]:443 ssl http2 default_server;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers HIGH:!aNULL:!MD5;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        location / {
#        }
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

}

Por favor, ajude-me a corrigir este problema.

saída do comando de status

[root @ localhost conf.d] # systemctl status nginx ● nginx.service - O nginx HTTP e o servidor proxy reverso    Carregado: carregado (/usr/lib/systemd/system/nginx.service; disabled; predefinido do fornecedor: desativado)    Ativo: falhou (Resultado: código de saída) desde seg 2017-12-11 20:41:37 IST; 6s atrás   Processo: 2446 ExecStartPre = / usr / sbin / nginx -t (código = encerrado, status = 1 / FALHA)   Processo: 2445 ExecStartPre = / usr / bin / rm - f /run/nginx.pid (código = encerrado, status = 0 / SUCESSO)

Dec 11 20:41:36 localhost.localdomain systemd [1]: Iniciando o nginx HTTP e o servidor proxy reverso ... Dez 11 20:41:37 localhost.localdomain nginx [2446]: nginx: a sintaxe do arquivo de configuração /etc/nginx/nginx.conf é ok 11 dez 20:41:37 localgin.localdomain nginx [2446]: nginx: [emerg] bind () para 0.0.0.0:82 falhou (13: Permissão negada) 11 dez 20:41:37 localgin.localdomain nginx [2446]: nginx: arquivo de configuração /etc/nginx/nginx.conf teste falhou 11 dez 20:41:37 localhost.localdomain systemd [1]: nginx.service: processo de controle encerrado, código = status exited = 1 11 dez 20:41:37 localhost.localdomain systemd [1]: Falha ao iniciar O nginx HTTP e o servidor proxy reverso. 11 dez 20:41:37 localhost.localdomain systemd [1]: Unidade nginx.service entrou em estado de falha. 11 dez 20:41:37 localhost.localdomain systemd [1]: nginx.service falhou.

    
por Vishnu Rajendran 10.12.2017 / 10:56

3 respostas

0

Algumas coisas para verificar: O seu firewall está lhe permitindo entrar pela porta 82 e 8080? O Jenkins é acessível sem a configuração do NginX da porta 8080?

O que eu faria é remover sua instalação atual do NginX e instalá-la a partir do repositório oficial do NginX. Eu suponho que você tenha instalado a partir do lançamento da epel, certo? Eu realmente não gosto disso porque coisas assim aconteciam comigo às vezes também. Dessa forma, você obterá outro arquivo nginx.conf que é mais simples, sem nenhuma diretiva de servidor, portanto, menos confuso.

Tenho certeza que você config é bom, é só que o seu nginx.conf estraga tudo. Remover o nginx e reinstalá-lo do repositório oficial do nginxs pode corrigir o problema. Mas aqui está o meu nginx.conf com algumas modificações de acordo com sua configuração:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}


http {
    server_tokens off;

    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    gzip on;
    gzip_min_length 1100;
    gzip_buffers 4 32k;
    gzip_types text/plain application/x-javascript text/xml text/css;
    gzip_vary on;

    include /etc/nginx/conf.d/*.conf;
    #include /etc/nginx/sites-enabled/*.conf;
}

Você pode tentar copiar e colar isso no seu arquivo nginx.conf (certifique-se de criar sempre um backup dos arquivos).

    
por 11.12.2017 / 16:29
0

Parece que seu problema com o modo SELinux.

Tentei o abaixo e funcionou.

1. Verifique o modo SELinux atual executando getenforce. Se ele diz Forçando, então defina temporariamente o modo para Permissivo, executando setenforce 0, e veja se o seu aplicativo funciona depois.

    
por 11.12.2017 / 17:06
0

Agora, estou tentando trabalhar com o SELinux ON

Eu tentei os passos abaixo da internet.

yum instala o policycoreutils-python

semanage port -a -t http_port_t-p tcp 82

semanage port -l | grep ^ http_port_t

[root @ localhost nginx] # semanage port -l | grep ^ http_port_t http_port_t tcp 82, 80, 81, 443, 488, 8008, 8009, 8443, 9000

Eu pude ver a porta 82 adicionada com sucesso.

Mas quando eu tento acessar meu servidor Jenkins usando link da minha máquina host, estou recebendo erro abaixo no navegador.

502 Gateway inválido

Nota:

Eu posso lançar jenkins a partir do link

também é possível acessar o servidor nginx pelo link

e quando eu rever meu set meu SELinux Permissive, eu sou capaz de acessar jenkins na porta 82.

Mas estou tentando trabalhar com o SELinux ON.

    
por 11.12.2017 / 17:41