Я обновил ОС своего сервера (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
new.example.com
и старое приложение, работающее на другом URL-адресе old.example.com
/ 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;
}
Ошибка возникает из-за того, что 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
, которые злы .