這個好用的網頁伺服器工具最近兩年被我大量使用,因為他的設定簡單,功能強大,在這裡我會把分幾個部分做說明:
- 安裝(ubuntu環境)
- 防火牆設定
- 常用操作
- 曾經遇到的坑
- 相關參考資源
安裝(ubuntu環境)
sudo apt-get updatesudo apt install nginxsudo systemctl start nginxsudo systemctl enable nginx
防火牆設定
sudo ufw allow ssh // 允許ssh登入作業sudo ufw allow 80 // 允許httpsudo ufw allow 443 // 允許httpssudo ufw allow ‘Nginx HTTP’sudo ufw enable // 啟動防火牆sudo ufw status // 列出當前防火牆狀態sudo ufw status numbered // 列出當前防火牆規則號碼(通常都是為了刪除)sudo ufw delete 2 // 刪除防火牆特定規則
常用操作
sudo systemctl restart nginx // 重啟sudo /etc/init.d/apache2 stop // 暫停apacheservice php7.3-fpm restart // php的conf修改後需要重啟
曾經遇到的坑
413 Request Entity Too Large
如果有用nginx當loadbalance,記得/etc/nginx/sites-enabled/default的部分也要做相對應的調整
client_max_body_size 2000M;sudo service nginx restart
Git clone through Nginx proxy for Gitlab server is not working
ssh_exchange_identification: Connection closed by remote host
因為/etc/nginx/sites-enabled/default的地方修改無效
所以要在上一層/etc/nginx/nginx.conf做修正
stream {
server {
listen 223;
listen [::]:223;
proxy_pass 192.xxx.xxx.xxx:22; //目標ip:ssh port
}
}sudo service nginx restart
server關機重啟後頁面 404
因為安裝php的時候apache有時沒注意會被順便安裝起來
首先檢查是否被apache佔用
sudo netstat -lpn |grep 80
如果是的話可以把apache暫停或是刪除
sudo /etc/init.d/apache2 stop // 暫停apache// 下面是刪除的方法
sudo apt-get purge apache2 apache2-utils apache2.2-bin apache2-common
sudo apt-get autoremove
whereis apache2
apache2: /etc/apache2 //列出路徑
sudo rm -rf /etc/apache2
nginx 502
查看錯誤日誌
sudo vi /var/log/nginx/error.log
connect() to unix:/var/run/php-fpm.sock failed (11: Resource temporarily unavailable)
如果是以上錯誤
sudo vi /etc/php/7.3/fpm/pool.d/www.conf
将backlog前面的;去掉,并将其值改为4096.
保存重启fpm
service php7.3-fpm restart
Nginx使用limit_req_zone對同一ip訪問進行限流
考慮到有可能的DDOS問題,又或是一些不正常的連線次數(在短時間大量call很多次api),可參考這兩篇文章修改nginx默認的連線設定:文章1、文章2
想調整可以先進入設定檔:
vi /etc/nginx/sites-available/default
針對你想要加上限制的部分加上設定:
limit_req_zone $binary_remote_addr zone=reqlimit:10m rate=5r/s;server {
listen 80 default_server;
limit_req zone=reqlimit;
}
- zone=reqlimit:自己定義的名稱
- 10m:Server 記憶體要保存多少 ip 的 request 紀錄
- rate=5r/s:每秒接受 5 個 requests
設定 no-cache 機制
有時網頁會 cache 到過去的資源,此時你可以在目標路徑下做如下設定
location / {
add_header Cache-Control no-cache;
add_header Cache-Control private;
try_files $uri $uri/ /index.html;
}
▶︎ 如果這篇文章有幫助到你1. 可以點擊下方「Follow」來追蹤我~
2. 可以對文章拍手讓我知道 👏🏻你們的追蹤與鼓勵是我繼續寫作的動力 🙏🏼▶︎ 如果你對工程師的職涯感到迷茫1. 也許我在iT邦幫忙發表的系列文可以給你不一樣的觀點 💡
2. 也歡迎您到書局選購支持,透過豐富的案例來重新檢視自己的職涯