Nginx 是一個高性能的 Web 服務器和反向代理服務器,同時也可以用作負載均衡器和 HTTP 緩存。
Nginx 的主要用途
用途 | 說明 |
---|---|
Web服務器 | 提供網頁服務,處理用戶的 HTTP 請求,返回 HTML、CSS、JS、圖片等靜態資源。 |
反向代理服務器 | 將用戶請求轉發到后端服務器(如 Tomcat、Flask、Spring Boot),隱藏真實后端。 |
負載均衡器 | 把用戶請求平均分發到多個后端服務器,提高處理能力和可用性。 |
緩存服務器 | 緩存靜態內容或后端響應,加快訪問速度,減輕后端壓力。 |
安裝 Nginx
sudo apt-get update
sudo apt-get install -y nginx
Nginx 配置路徑
內容 | 路徑 |
---|---|
nginx 根目錄 | /etc/nginx |
配置文件 | /etc/nginx/nginx.conf |
站點配置目錄 | /etc/nginx/sites-available/ |
啟用的站點目錄 | /etc/nginx/sites-enabled/ |
默認網頁目錄 | /var/www/html |
日志文件 | /var/log/nginx/access.log 和 error.log |
/etc/nginx/nginx.conf:文件不用動,它的作用是加載其他子配置文件。
/etc/nginx/sites-available/:所有的子配置文件都存放在這個目錄,相當于候選配置。
/etc/nginx/sites-enabled/:Nginx 啟動時只會讀取這個目錄中的配置文件,如果想讓候選配置生效,就把候選配置通過軟鏈接,連接到這個目錄。
配置文件
我們要添加一個配置,要怎么弄?
1. 在 /etc/nginx/sites-available/ 目錄下創建一個文件,這個文件名稱自定義,可以叫任何名字(比如:default、example.com、api.conf,都可以)。文件的內容是一個 server 區塊,用來配置某個網站或服務的監聽方式、路徑、靜態目錄等。
sudo vim /etc/nginx/sites-available/my-site
/etc/nginx/sites-available/my-site?文件內容如下:
server {listen 80;server_name localhost;root /var/www/html;index index.html;location / {try_files $uri $uri/ =404;}
}
參數說明 | 含義 |
---|---|
listen 80; | 監聽 80 端口(HTTP 默認端口,HTTPS端口443) |
server_name localhost; | 設置主機名(用域名部署時改成你的域名) |
root /var/www/html; | 網站根目錄,里面應該放 index.html 等文件 |
index index.html index.htm; | 設置默認首頁文件 |
location / | 匹配所有路徑請求 |
try_files $uri $uri/ =404; | 如果文件存在就加載文件,不存在就返回 404 |
2. 保存退出后,再用符號鏈接讓它生效:
添加軟鏈接
sudo ln -s /etc/nginx/sites-available/my-site /etc/nginx/sites-enabled/
# 移除軟鏈接
sudo rm /etc/nginx/sites-enabled/my-site
3. 檢查配置文件是否正確,然后重啟 nginx 服務
sudo nginx -t
sudo systemctl reload nginx
4. 把靜態文件資源,例如 index.html,放到?root /var/www/html 這里配置的目錄
5. 然后瀏覽器輸入 http://ip:port 訪問
Nginx 常用命令
啟動 Nginx:sudo systemctl start nginx
停止 Nginx:sudo systemctl stop nginx
重啟 Nginx:sudo systemctl restart nginx
重載配置(不中斷服務):sudo systemctl reload nginx
查看 Nginx 狀態:sudo systemctl status nginx
開啟開機自啟動:sudo systemctl enable nginx
禁用開機啟動:sudo systemctl disable nginx
查看 Nginx 版本:nginx -v
查看 Nginx 安裝的模塊:nginx -V
檢查配置文件是否有語法錯誤:sudo nginx -t
啟動 Nginx(等同于 systemctl start nginx):sudo nginx
停止 Nginx(快速關閉):sudo nginx -s stop
優雅關閉(處理完當前請求再退出):sudo nginx -s quit
重載配置(推薦使用):sudo nginx -s reload
更多配置請查看:nginx配置