Я установил nginx через yum на Centos 7.4. Я добавил несколько сайтов в /etc/nginx/conf.d
которые прослушивают порт 80. Вот пример:
server {
listen 80;
root /var/www/vhosts/somesite;
index index.php index.html index.htm;
server_name api.somesite.info;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/impro.somesite.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
nginx -t возвращает:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Служба запускается следующим образом:
systemctl start nginx
Это не возвращает ошибок. И в настоящее время брандмауэр не установлен.
Проблема в том, что даже если я укажу /etc/hosts
на api.somesite.info я получаю отказ в соединении.
Чтобы увидеть привязанные порты, я побежал netstat -ltnep
, давая:
Proto Recv-Q Send-Q Local Address Foreign Address State
User Inode PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 0 14585 1/systemd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 18224 1105/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 0 16689 979/master
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 0 68092 4930/php-fpm: maste
tcp6 0 0 :::3306 :::* LISTEN 27 51441 26589/mysqld
tcp6 0 0 :::111 :::* LISTEN 0 14584 1/systemd
tcp6 0 0 :::22 :::* LISTEN 0 18226 1105/sshd
tcp6 0 0 ::1:25 :::* LISTEN 0 16690 979/master
Итак, хотя php-fpm привязан к порту (на самом деле я в основном использую сокеты, но здесь это не актуально, я не думаю), nginx - нет. Обратите внимание, что порт 80 не прослушивается - apache не установлен по умолчанию в этой версии centos.
Я вижу, что nginx работает, запустив systemctl status nginx
:
nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2018-04-04 15:24:04 BST; 4min 8s ago
Process: 6091 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 6088 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 6086 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Main PID: 6094 (nginx)
CGroup: /system.slice/nginx.service
├─6094 nginx: master process /usr/sbin/nginx
└─6095 nginx: worker process
Apr 04 15:24:04 smaractus systemd[1]: Starting The nginx HTTP and reverse proxy server...
Apr 04 15:24:04 smaractus nginx[6088]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Apr 04 15:24:04 smaractus nginx[6088]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Apr 04 15:24:04 smaractus systemd[1]: Failed to read PID from file /run/nginx.pid: Invalid argument
Apr 04 15:24:04 smaractus systemd[1]: Started The nginx HTTP and reverse proxy server.
Я вижу предупреждение здесь, где не удается найти файл pid, но насколько я понимаю, это не ограничитель показа? Нет идей, где теперь искать. Почему nginx не связывает порт 80?
Вы случайно не видели это в nginx.conf
?
# 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;
Это означает, что имя файла в /etc/nginx/conf.d
должен заканчиваться .conf
. Проверьте имя файла и переименуйте его так, чтобы он заканчивался на .conf
. С любым другим именем он будет проигнорирован.