Linux安裝Nginx詳細教程
一、下載nginx
1、手動下載
進入nginx下載地址:http://nginx.p2hp.com/en/download.html,點擊 “nginx-1.25.1” 進行下載
將下載的文件 nginx-1.25.1.tar.gz 通過Xftp工具或者通過其他工具上傳至Linux 服務器 /root 目錄。
2、自動下載
也可以使用下載命令獲取安裝包
wget https://nginx.org/download/nginx-1.25.1.tar.gz
二、拷貝壓縮包并解壓
創(chuàng)建prod目錄命令:mkdir /usr/local/prod/
拷貝命令:cp nginx-1.25.1.tar.gz /usr/local/prod/
進入prod目錄命令:cd /usr/local/prod/
解壓命令:tar -zxvf nginx-1.25.1.tar.gz
三、檢查配置并指定安裝參數(shù)
進入nginx-1.25.1目錄命令:cd nginx-1.25.1/
安裝工具命令:yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
編譯前檢查命令: ./configure --prefix=/usr/local/prod/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/prod/pcre-8.45
拆解一下上面的命令:
./configure 是編譯前檢查的命令;
--prefix=/usr/local/prod/nginx 是安裝到指定目錄;
--with-http_stub_status_module --with-http_ssl_module 是安裝ssl證書的兩個模塊;
--with-pcre=/usr/local/prod/pcre-8.35 是**PCRE**的安裝位置(https相關,可選項,后面有說明)
注:如果沒有安裝過 gcc、ssl等,執(zhí)行檢查步驟可能會報錯,需要先安裝以下工具
# 安裝工具
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
# 重新檢查
./configure --prefix=/usr/local/prod/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/prod/pcre-8.45
四、編譯和安裝
編譯和安裝命令:make && make install
注:安裝完成后,會在 /usr/local/prod/ 目錄下生成一個 nginx 的目錄,這是我們指定的位置。安裝后生成的 nginx 里面有四個目錄 (conf html logs sbin),配置文件在 conf/nginx.conf, 啟動文件在 sbin/nginx,先別著急啟動,我們先完成http的配置。
五、完成后可以按需刪除安裝包和解壓目錄
此時,/usr/local/prod/nginx-1.25.1 目錄 就不會再用到了,可以對無用目錄和文件進行刪除。
命令:rm -f /usr/local/prod/pcre-8.45.tar.gz
命令:rm -f /usr/local/prod/nginx-1.25.1.tar.gz
# 安裝后解壓目錄也可以刪除,因為是文件夾,加上 -r 遍歷刪除
命令:rm -rf /usr/local/prod/nginx-1.25.1
六、設置軟鏈
設置軟鏈后,就可以在任何目錄使用nginx命令。
命令:ln -s /usr/local/webserver/nginx/sbin/nginx /usr/bin/
# 設置軟鏈后,可以嘗試在其他目錄使用以下命令看是否成功
查看nginx版本命令:nginx -v
七、創(chuàng)建專屬組和用戶
/usr/sbin/groupadd nginx
/usr/sbin/useradd -g nginx nginx
八、配置nginx.conf
nginx.conf 文件內默認是有基礎配置的,建議把配置文件下載到本地,用其他編輯器(例如 VS code)修改完后,再上傳覆蓋掉原來的文件,不用擔心,同目錄下有一個原始文件的備份(nginx.conf.default)。
也可以使用命令修改:
vim /usr/local/prod/nginx/conf/nginx.conf
注意:
可操作項,根據(jù)實際項目修改,https不需要的可以注釋掉。
如果有Apache占用了80端口,將端口號改成其他端口。
重點項在里面都標記了出來,http中有host配置,https中有host和ssl證書配置。
修改完后,如果服務器已啟動過,使用命令重載一下配置 `nginx -s reload`。
增加`underscores_in_headers on;` Nginx將允許在HTTP響應頭中使用下劃線作為字段名。
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
client_max_body_size 50m;
fastcgi_connect_timeout 300s;
fastcgi_send_timeout 300s;
fastcgi_read_timeout 300s;
fastcgi_buffer_size 128k;
fastcgi_buffers 2 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
underscores_in_headers on; #Nginx將允許在HTTP響應頭中使用下劃線作為字段名
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html;
#proxy_redirect off;
#proxy_set_header Host $host;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /api/ {
proxy_pass http://localhost:8180/; #代理地址
proxy_connect_timeout 60; #連接超時時長
proxy_send_timeout 60; #請求超時時長
proxy_read_timeout 60; #響應超時時長
#以下的配置是防止代理訪問失敗時,瀏覽器暴露服務的真實地址
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
九、服務器防火墻開放80端口
如果系統(tǒng)啟用了防火墻的話,就要在防火墻端開放端口。
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
十、檢查配置、啟動、測試(查看進程、網頁訪問)
# 檢查配置
nginx -t(檢查nginx.conf配置是否正確)
nginx -s reload(重新載入配置文件,通常配合-t使用,在修改了nginx.conf且檢查無誤之后)
十一、運行nginx
#啟動
nginx
#查看進程命令
ps -ef | grep nginx
# 其他的一些常用命令
#停止
nginx -s stop
#重啟
nginx -s reload
#查看nginx服務狀態(tài),通常配合-t使用
systemctl status nginx.service