linux - systemctl启动nginx没有加载nginx.conf配置文件?
高洛峰
高洛峰 2017-04-17 14:00:28
0
2
1068

fedora23 ,我在我的用户目录下面放了我的工程文件夹,其中有一些静态文件(css,图片之类的),就用nginx做了个服务器来提供。
nginx是用的fedora wiki上面nginx教程里提供的方法直接从fedora源用dnf安装的,装好后nginx.conf里面配置的用户是“nginx”。不管我怎么改变我用户目录的权限,总之就是403 forbidden,查看log显示权限不够。

看了网上的教程,说开发中直接使用root用户即可,想想很有道理,就把nginx.conf里面的用户改成了root,重启nginx 服务后查看ps aux | grep nginx, 发现确实是root用户了,然而仍然是403

后来我直接使用nginx -c /etc/nginx/nginx.conf来启动,就一切正常了。使用ps aux查看用户没有区别,只有master process这一项由/usr/sbin/nginx变成了nginx -c /etc/nginx/nginx.conf

现在的猜测是,systemctl启动(包括service nginx start这种方式)启动的时候并没有正确加载nginx.conf中关于用户的配置项,但是server的配置是正常的……

不知道有没有人遇到和我一样的问题

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(2)
大家讲道理

原來就是SElinux的權限管理在搗亂,他不讓nginx訪問nginx.conf,直接google nginx selinux可以在nginx官網上找到方法,就是用semanage加上httpd_t什麼的就可以了,具體google即可

Peter_Zhu

我也遇到這樣的問題,我是用yum install nginx安裝的,安裝後自動產生了nginx.service。但用systemctl start nginx.service會卡住,用ctrl + C 結束後,查看進程已經啟動了,能正常使用。用/usr/sbin/nginx -c /etc/nginx/nginx.conf 能啟動就沒有這種問題,懷疑是systemctl 啟動檔案出了問題,查看了一下,最有可能出問題的就是ExecStartPre=/usr/ sbin/nginx -t -c /etc/nginx/nginx.conf

view /usr/lib/systemd/system/nginx.service

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss -lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf 我把這一行封鎖了
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID

[Install]
WantedBy=multi-user.target

單獨執行/usr/sbin/nginx -t -c /etc/nginx/nginx.conf是沒有任何問題的,但是放在這裡就是有問題,雖然問題解決了,但是還是不明白為什麼會導致這種問題。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!