Я обновил CentOS 7, и теперь nginx не запускается автоматически при загрузке системы

Я обновил ОС своего сервера (CentOS 7) с помощью команды "yum update", и теперь NGINX этого не делает. t запускается во время загрузки системы.

В журнале запуска отображается:

Sep 15 05:41:30 server_hostname nm-dispatcher: req:1 'hostname': start running ordered scripts...
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7261] dhcp-init: Using DHCP client 'dhclient'
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7261] manager: rfkill: WiFi enabled by radio killswitch; enabled by state file
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7261] manager: rfkill: WWAN enabled by radio killswitch; enabled by state file
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7262] manager: Networking is enabled by state file
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7264] Loaded device plugin: NMBondDeviceFactory (internal)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7264] Loaded device plugin: NMBridgeDeviceFactory (internal)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7265] Loaded device plugin: NMDummyDeviceFactory (internal)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7265] Loaded device plugin: NMEthernetDeviceFactory (internal)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7265] Loaded device plugin: NMInfinibandDeviceFactory (internal)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7265] Loaded device plugin: NMIPTunnelDeviceFactory (internal)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7265] Loaded device plugin: NMMacsecDeviceFactory (internal)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7295] Loaded device plugin: NMMacvlanDeviceFactory (internal)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7295] Loaded device plugin: NMTunDeviceFactory (internal)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7295] Loaded device plugin: NMVethDeviceFactory (internal)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7295] Loaded device plugin: NMVlanDeviceFactory (internal)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7295] Loaded device plugin: NMVxlanDeviceFactory (internal)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7351] Loaded device plugin: NMWifiFactory (/usr/lib64/NetworkManager/libnm-device-plugin-wifi.so)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7377] Loaded device plugin: NMTeamFactory (/usr/lib64/NetworkManager/libnm-device-plugin-team.so)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7389] device (lo): link connected
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7396] manager: (lo): new Generic device (/org/freedesktop/NetworkManager/Devices/1)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7413] manager: (dummy0): new Dummy device (/org/freedesktop/NetworkManager/Devices/2)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7428] manager: (eth0): new Ethernet device (/org/freedesktop/NetworkManager/Devices/3)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7448] device (eth0): state change: unmanaged -> unavailable (reason 'managed') [10 20 2]
Sep 15 05:41:30 server_hostname kernel: IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7474] device (eth0): link connected
Sep 15 05:41:30 server_hostname kernel: 8021q: adding VLAN 0 to HW filter on device eth0
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7500] manager: (teql0): new Generic device (/org/freedesktop/NetworkManager/Devices/4)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7550] manager: (tunl0): new IPTunnel device (/org/freedesktop/NetworkManager/Devices/5)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7565] manager: (gre0): new IPTunnel device (/org/freedesktop/NetworkManager/Devices/6)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7603] manager: (gretap0): new Generic device (/org/freedesktop/NetworkManager/Devices/7)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7613] manager: (ip_vti0): new Generic device (/org/freedesktop/NetworkManager/Devices/8)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7623] manager: (ip6_vti0): new Generic device (/org/freedesktop/NetworkManager/Devices/9)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7638] manager: (sit0): new IPTunnel device (/org/freedesktop/NetworkManager/Devices/10)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7648] manager: (ip6tnl0): new Generic device (/org/freedesktop/NetworkManager/Devices/11)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7668] manager: (ip6gre0): new Generic device (/org/freedesktop/NetworkManager/Devices/12)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7864] device (eth0): state change: unavailable -> disconnected (reason 'none') [20 30 0]
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7883] policy: auto-activating connection 'System eth0'
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7914] device (eth0): Activation: starting connection 'System eth0' (5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03)
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7920] device (eth0): state change: disconnected -> prepare (reason 'none') [30 40 0]
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7924] manager: NetworkManager state is now CONNECTING
Sep 15 05:41:30 server_hostname NetworkManager[3277]: <info>  [1505464890.7942] device (eth0): state change: prepare -> config (reason 'none') [40 50 0]
Sep 15 05:41:30 server_hostname firewalld[3266]: WARNING: ICMP type 'beyond-scope' is not supported by the kernel for ipv6.
Sep 15 05:41:30 server_hostname firewalld[3266]: WARNING: beyond-scope: INVALID_ICMPTYPE: No supported ICMP type., ignoring for run-time.
Sep 15 05:41:30 server_hostname firewalld[3266]: WARNING: ICMP type 'failed-policy' is not supported by the kernel for ipv6.
Sep 15 05:41:30 server_hostname firewalld[3266]: WARNING: failed-policy: INVALID_ICMPTYPE: No supported ICMP type., ignoring for run-time.
Sep 15 05:41:30 server_hostname firewalld[3266]: WARNING: ICMP type 'reject-route' is not supported by the kernel for ipv6.
Sep 15 05:41:30 server_hostname firewalld[3266]: WARNING: reject-route: INVALID_ICMPTYPE: No supported ICMP type., ignoring for run-time.
Sep 15 05:41:30 server_hostname kernel: random: crng init done
Sep 15 05:41:31 server_hostname NetworkManager[3277]: <info>  [1505464891.0265] device (eth0): state change: config -> ip-config (reason 'none') [50 70 0]
Sep 15 05:41:31 server_hostname NetworkManager[3277]: <info>  [1505464891.0313] device (eth0): state change: ip-config -> ip-check (reason 'none') [70 80 0]
Sep 15 05:41:31 server_hostname NetworkManager[3277]: <info>  [1505464891.0323] device (eth0): state change: ip-check -> secondaries (reason 'none') [80 90 0]
Sep 15 05:41:31 server_hostname NetworkManager[3277]: <info>  [1505464891.0325] device (eth0): state change: secondaries -> activated (reason 'none') [90 100 0]
Sep 15 05:41:31 server_hostname NetworkManager[3277]: <info>  [1505464891.0326] manager: NetworkManager state is now CONNECTED_LOCAL
Sep 15 05:41:31 server_hostname NetworkManager[3277]: <info>  [1505464891.0480] manager: NetworkManager state is now CONNECTED_SITE
Sep 15 05:41:31 server_hostname NetworkManager[3277]: <info>  [1505464891.0481] policy: set 'System eth0' (eth0) as default for IPv4 routing and DNS
Sep 15 05:41:31 server_hostname NetworkManager[3277]: <info>  [1505464891.0493] device (eth0): Activation: successful, device activated.
Sep 15 05:41:31 server_hostname NetworkManager[3277]: <info>  [1505464891.0498] manager: startup complete
Sep 15 05:41:31 server_hostname NetworkManager[3277]: <info>  [1505464891.0502] manager: NetworkManager state is now CONNECTED_GLOBAL
Sep 15 05:41:31 server_hostname nm-dispatcher: req:2 'up' [eth0]: new request (3 scripts)
Sep 15 05:41:31 server_hostname nm-dispatcher: req:2 'up' [eth0]: start running ordered scripts...
Sep 15 05:41:31 server_hostname nm-dispatcher: req:3 'connectivity-change': new request (3 scripts)
    Sep 15 04:33:05 server_hostname systemd: Started Network Manager Wait Online.
    Sep 15 04:33:05 server_hostname systemd: Starting LSB: Bring up/down networking...
    Sep 15 04:33:05 server_hostname nm-dispatcher: req:3 'connectivity-change': start running ordered scripts...
    Sep 15 04:33:05 server_hostname network: Bringing up loopback interface:  [  OK  ]
    Sep 15 04:33:05 server_hostname network: Bringing up interface eth0:  [  OK  ]
    Sep 15 04:33:05 server_hostname systemd: Started LSB: Bring up/down networking.
    Sep 15 04:33:05 server_hostname systemd: Reached target Network.
    Sep 15 04:33:05 server_hostname systemd: Starting Network.
    Sep 15 04:33:05 server_hostname systemd: Reached target Network is Online.
    Sep 15 04:33:05 server_hostname systemd: Starting Network is Online.
    Sep 15 04:33:05 server_hostname systemd: Starting nginx - high performance web server...
    Sep 15 04:33:05 server_hostname systemd: Starting LSB: Start and stop FastCGI processes...
    Sep 15 04:33:05 server_hostname systemd: Starting MySQL Community Server...
    Sep 15 04:33:05 server_hostname systemd: Starting The PHP FastCGI Process Manager...
    Sep 15 04:33:05 server_hostname systemd: Starting Fail2Ban Service...
    Sep 15 04:33:05 server_hostname systemd: Starting Dynamic System Tuning Daemon...
    Sep 15 04:33:05 server_hostname systemd: Starting Pure-FTPd FTP server...
    Sep 15 04:33:05 server_hostname systemd: Starting /etc/rc.d/rc.local Compatibility...
    Sep 15 04:33:05 server_hostname systemd: Starting OpenSSH server daemon...
    Sep 15 04:33:05 server_hostname nginx: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    Sep 15 04:33:05 server_hostname nginx: nginx: [emerg] bind() to [**My IPv6 address here**]:80 failed (99: Cannot assign requested address)
    Sep 15 04:33:05 server_hostname nginx: nginx: configuration file /etc/nginx/nginx.conf test failed
    Sep 15 04:33:05 server_hostname systemd: nginx.service: control process exited, code=exited status=1
    Sep 15 04:33:05 server_hostname systemd: Failed to start nginx - high performance web server.
    Sep 15 04:33:05 server_hostname systemd: Unit nginx.service entered failed state.
    Sep 15 04:33:05 server_hostname systemd: nginx.service failed.
    Sep 15 04:33:05 server_hostname systemd: Started /etc/rc.d/rc.local Compatibility.
Sep 15 05:41:31 server_hostname spawn-fcgi: Starting spawn-fcgi: [  OK  ]
Sep 15 05:41:31 server_hostname systemd: Started LSB: Start and stop FastCGI processes.
Sep 15 05:41:31 server_hostname systemd: Started Dynamic System Tuning Daemon.
Sep 15 05:41:31 server_hostname fail2ban-client: 2017-09-15 05:41:31,760 fail2ban.server         [3616]: INFO    Starting Fail2ban v0.9.6
Sep 15 05:41:31 server_hostname fail2ban-client: 2017-09-15 05:41:31,761 fail2ban.server         [3616]: INFO    Starting in daemon mode
Sep 15 05:41:31 server_hostname mysqld_safe: 170915 05:41:31 mysqld_safe Logging to '/var/log/mysqld.log'.
Sep 15 05:41:31 server_hostname mysqld_safe: 170915 05:41:31 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Sep 15 05:41:31 server_hostname systemd: Started Fail2Ban Service.
Sep 15 05:41:32 server_hostname systemd: Started MySQL Community Server.
Sep 15 05:41:32 server_hostname systemd: Started ISPConfig DC Sync.
Sep 15 05:41:32 server_hostname systemd: Starting ISPConfig DC Sync...
Sep 15 05:41:32 server_hostname NetworkManager[3277]: <info>  [1505464892.7411] policy: set 'System eth0' (eth0) as default for IPv6 routing and DNS
Sep 15 05:41:33 server_hostname systemd: Started The PHP FastCGI Process Manager.
Sep 15 05:41:33 server_hostname systemd: Reached target Multi-User System.
Sep 15 05:41:33 server_hostname systemd: Starting Multi-User System.
Sep 15 05:41:33 server_hostname systemd: Starting Update UTMP about System Runlevel Changes...
Sep 15 05:41:33 server_hostname systemd: Started Update UTMP about System Runlevel Changes.
Sep 15 05:41:33 server_hostname systemd: Startup finished in 1.741s (kernel) + 3.868s (userspace) = 5.609s.

Любопытно, что я могу запустить NGINX вручную после загрузки, и он работает нормально.

CentOS 7.4.1708

NGINX 1.12.1

/ и т.д / systemd / system / multi-user.target.wants / nginx. Мне нужно обработать ...

У меня есть особые потребности в прокси-сервере Nginx

  • У меня есть новое приложение JS (+ nginx) под основным URL new.example.com и старое приложение, работающее на другом URL-адресе old.example.com
  • Мне нужно обработать предварительную визуализацию для поисковых систем для моего нового приложения (я использую официальный сценарий предварительной проверки nginx в качестве основы). Старому приложению не нужен предварительный рендеринг (и фактически оно действует как мой предварительный рендеринг на данный момент)
  • Когда пользователь вводит www.example.com, он обращается к моему прокси-серверу nginx, которому требуется
    • Для прокси / admin на old.example.com/admin
    • Для проксирования всех запросов ботов на предварительный рендерер
    • Для прокси по умолчанию на new.example. com

Чтобы упростить задачу, у меня есть блоки @location, представляющие каждое приложение (но, возможно, это несовместимо с остальными, пожалуйста, сообщите мне)

location @newapp { proxy_pass http://new.example.com:8080; } location @oldapp { proxy_pass http://old.example.com:8080; }

Сейчас, когда мое новое приложение находится в стадии разработки, я бы хотел, чтобы URL-адреса / admin перенаправляли на мое старое приложение. Я нашел где-то в Интернете трюк с использованием try_files с файлом maintenance.html

location / admin { try_files /main maintenance.html @oldapp; }

Теперь все становится еще серьезнее, поскольку - Мое новое приложение требует предварительной отрисовки - Мое старое приложение не требует предварительной отрисовки и используется в качестве запасного варианта, когда требуются мета. - For now I don't have a prerenderer app (I will install/setup prerenderer.io later) so I am using my old app as a prerenderer for bot engines

location @prerenderer {
    try_files /maintenance.html @oldapp # will later be changes to prerenderer.io
}

# in the core nginx server block
server {
  ...
  set $prerender 0;
  # [all bot/img logic that may set prerender to 1][1]
}

Also I had to edit my @newapp to force switching to @prerenderer

location @newapp {
    if ($prerender = 1) {
        try_files /maintenance.html @prerenderer;
    }
    if ($prerender = 0) {
        try_files /maintenance.html @newapp;
    }
}

But with this I'm getting several nginx errors and I'm not sure what I am or not allowed to do

nginx: [emerg] "try_files" directive is not allowed here in

It seems that nginx doesn't like try_files in an if block.

How would you write the nginx conf file ?

My full nginx config file looks like

server {
    listen 80;
    listen 443 ssl;
    server_name www.example.com;
    access_log /var/log/nginx/www.example.com.log;

    auth_basic "Dev's Area";
    auth_basic_user_file /etc/nginx/.htpasswd;

    # https://gist.github.com/thoop/8165802
    set $prerender 0;
    if ($http_user_agent ~* "baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator") {
        set $prerender 1;
    }
    if ($args ~ "_escaped_fragment_") {
        set $prerender 1;
    }
    if ($http_user_agent ~ "Prerender") {
        set $prerender 0;
    }
    if ($uri ~* "\.(js|css|xml|less|png|jpg|jpeg|gif|pdf|doc|txt|ico|rss|zip|mp3|rar|exe|wmv|doc|avi|ppt|mpg|mpeg|tif|wav|mov|psd|ai|xls|mp4|m4a|swf|dat|dmg|iso|flv|m4v|torrent|ttf|woff|svg|eot)") {
        set $prerender 0;
    }

    #resolve using Google's DNS server to force DNS resolution and prevent caching of IPs
    resolver 8.8.8.8;

    # Defaults map to new APP EXCEPT if prerendering needed
    location / {
        if ($prerender = 1) {
            try_files /maintenance.html @prerenderer;
        }
        if ($prerender = 0) {
            try_files /maintenance.html @oldapp;
        }
    }

    # Many Static pages not available => mapped to old app
    location ~ /(privacy|faq|about_us|terms|press|legal) {
        try_files /maintenance.html @oldapp;
    }

    # Admin stuff => old app
    location /company/admin/ {
        try_files /maintenance.html @oldapp;
    }

    location @prerenderer {
        # For now old app, will use prerenderer.io later
        try_files /maintenance.html @oldapp
    }

    location @newapp {
        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 Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        if ($prerender = 1) {
            try_files /maintenance.html @prerenderer;
        }
        if ($prerender = 0) {
            proxy_pass http://new.example.com:8080;
        }
    }

    location @oldapp {
        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 Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass https://old.example.com;
        proxy_redirect off;
    }

    #ssl stuff here

    client_max_body_size 4G;
    keepalive_timeout 10;
 }
0
задан 17 September 2017 в 14:40
1 ответ

Ошибка возникает из-за того, что try_files не допускается внутри if block.

Я бы попытался реализовать выбор серверной части с помощью директивы map :

map $http_user_agent $render {
    default $argcheck;
    "~* (baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator)" old.example.com;
}

map $args $argcheck {
    default oldapp;
    ~_escaped_fragment_ prerender;
}

С этими двумя картами вы получите переменную $ render , который будет содержать oldapp , если ни одно из указанных правил не соответствует, или prerender , если либо пользовательский агент соответствует, либо аргументы запроса содержат определенную строку.

Я есть не уверен на 100% в этой части, но тогда вы можете использовать переменную следующим образом:

location / {
    try_files /maintenance.html @$render;
}

Таким образом вы можете избежать операторов if , которые злы .

0
ответ дан 5 December 2019 в 07:27

Теги

Похожие вопросы