nginx 普通用戶使用80端口啟動nginx


方法一: 依次執行如下命令

cd /usr/local/nginx/sbin/ 
chown root nginx
chmod u+s nginx

優點是,方便簡單,缺點是,既然sudo權限都不給了。這個set uid 最后也是讓nginx運行在root權限下。 ps -ef |grep nginx 查看的時候,nginx的主進程是運行在root下的。 雖然是可以讓普通用戶運行nginx服務,但是不是所有nginx進程都在用戶本身下運行

方法二:iptables端口轉發

使用非80端口啟動程序,然后再用iptables做一個端口轉發。

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 
#用root用戶直接去執行就可以了! 
(
sysctl -w net.ipv4.ip_forward=1
iptables -F -t nat #清空nat表
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to:8088
)

優點:可以用第三方用戶直接啟動,nginx的主進程就是用戶本身來啟動的。缺點,額外增加開銷,負載低的情況可以,負載高了 就不太好了

方案三:賦予nginx監聽80端口的能力

nginx內核 超過2.1版本以后 出現了能力的說法
我們可以給/usr/local/nginx/sbin/nginx 賦予監聽80端口的權限能力

setcap cap_net_bind_service =+ep /usr/local/nginx/sbin/nginx

這樣就可以直接用普通用戶啟用nginx了。並且可以在高負載的情況下,減少由於端口轉發部分的負載開銷。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM