Я пытаюсь настроить свой nginx в качестве обратного прокси-сервера.

У меня установлены jenkins и nginx на одном сервере.Я пытаюсь получить доступ к jenkins на порт 82 вместо порта 8080.

Ибо то, что я сделал до сих пор,

  1. Перейдите в /etc/nginx/conf.d и создайте новый файл, например: 'forward_jenkins.conf'
  2. Содержание файла forward_jenkins.conf. (Это случайный фрагмент, который я нашел в интернете.)

    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. Сохраните файл и запустите nginx.

Ниже приведена ошибка, которую я получаю

[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.

Я тоже попробовал приведенную ниже команду.

[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

Я ничего не изменил в моем файле 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 {
#        }
#    }

}

Пожалуйста, помогите мне решить эту проблему.

вывод команды состояния

[root @ localhost conf.d] # systemctl status nginx ● nginx.service - HTTP-сервер и обратный прокси-сервер nginx Загружен: загружен (/usr/lib/systemd/system/nginx.service; отключен; предустановка поставщика: отключена) Active: не удалось (Результат: код выхода) с понедельника 2017-12-11 20:41:37 IST; 6s ago Процесс: 2446 ExecStartPre =/usr/sbin/nginx -t (код = выход, состояние = 1/ ОТКАЗ) Процесс: 2445 ExecStartPre =/usr/ bin/ rm -f /run/nginx.pid (код = выход, состояние = 0 / УСПЕХ)

11 декабря 20:41:36 localhost.localdomain systemd [1]: Запуск HTTP и обратного прокси-сервера nginx ... 11 декабря 20:41:37 localhost.localdomain nginx [2446]: nginx: синтаксис файла конфигурации /etc/nginx/nginx.conf в порядке 11 декабря 20:41:37 localhost.localdomain nginx [2446]: nginx: [emerg ] bind() с 0.0.0.0:82 не удалось (13: разрешение отклонено) 11 декабря 20:41:37 localhost.localdomain nginx [2446]: nginx: файл конфигурации /etc/nginx/nginx.conf тест не пройден 11 декабря 20: 41:37 localhost.localdomain systemd [1]: nginx.service: процесс управления завершен, код = состояние выхода = 1 дек. 11 20:41:37 localhost.localdomain systemd [1]: не удалось запустить HTTP и обратный прокси-сервер nginx , 11 декабря 20:41:37 localhost.localdomain systemd [1]: модуль nginx.service перешел в состояние сбоя. 11 декабря 20:41:37 localhost.localdomain systemd [1]: сбой nginx.service.

3 ответа3

0

Сейчас я пытаюсь работать с SELinux ON

Я попробовал следующие шаги из интернета.

ням установить policycoreutils-python

порт semanage -a -t http_port_t -p tcp 82

порт semanage -l | grep ^ http_port_t

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

Я мог видеть, что порт 82 успешно добавлен.

Но когда я пытаюсь получить доступ к своему серверу jenkins, используя http://192.168.5.129:82/ с моей хост-машины, я получаю ниже ошибку в браузере.

502 Неверный шлюз

Замечания:

Я могу запустить Дженкинс с http://192.168.5.129:8080/

также я могу получить доступ к веб-серверу nginx по адресу http://192.168.5.129:80

и когда я возвращаю мой набор моего SELinux Permissive, я могу получить доступ к jenkins в порту 82.

Но я пытаюсь работать с SELinux ON.

0

Несколько вещей для проверки: ваш брандмауэр пропускает вас через порты 82 и 8080? Доступен ли Jenkins без вашей конфигурации NginX с 8080-го порта?

Я хотел бы удалить текущую установку NginX и установить ее из официального репозитория NginX. Я полагаю, вы установили его с epel-release, верно? Мне это не очень нравится, потому что такие вещи иногда случались со мной. Таким образом, вы получите другой файл nginx.conf, который будет более простым, без каких-либо директив сервера, а следовательно, менее запутанным.

Я почти уверен, что ваш конфиг хорош, просто ваш nginx.conf разрушает его. Удаление nginx и переустановка его из официального репозитория nginxs может решить вашу проблему. Но вот мой nginx.conf с некоторыми изменениями в соответствии с вашими настройками:

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;
}

Вы можете попробовать скопировать и вставить это в свой файл nginx.conf (всегда создавайте резервную копию файлов).

0

Похоже, его проблема с режимом SELinux.

Попробовал ниже и все заработало.

1.Проверьте текущий режим SELinux, запустив getenforce. Если написано Enforcing, временно установите режим Permissive, запустив setenforce 0, и посмотрите, будет ли ваше приложение работать позже.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .