Linux Nginx的安装与配置(全程图文记录超详细)
一、本文內容的包含
二、前言
Nginx 是一款由俄羅斯的程序設計師 Igor Sysoev 所開發的高性能 Web 和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。在高連接并發的情況下,可以使用 Nginx 替代 Apache 服務器。
官網下載頁地址
我選擇使用官網上的最新穩定版 Stable version v1.22.0 版本 進行演示,目錄請自由選擇。
三、大致步驟
- PS:如果需要 Rewrite 服務的話,需要先移步下面 “8. https依賴安裝” 進行 PCRE 安裝,方便安裝 nginx 時一起配置
1. 拷貝壓縮包并解壓
# 可以打開鏈接下載后上傳至服務器,也可以使用下載命令獲取安裝包 $ wget https://nginx.org/download/nginx-1.22.0.tar.gz# 目錄請自由選擇 $ cp nginx-1.22.0.tar.gz /usr/local/webserver/ $ cd /usr/local/webserver/ $ tar -zxvf nginx-1.22.0.tar.gz2. 檢查配置并指定安裝參數
$ cd nginx-1.22.0/ $ ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/webserver/pcre-8.45拆解一下上面的命令:
./configure 是編譯前檢查的命令,--prefix=/usr/local/webserver/nginx 是安裝到指定目錄,--with-http_stub_status_module --with-http_ssl_module 是安裝ssl證書的兩個模塊,--with-pcre=/usr/local/src/pcre-8.35 是**PCRE**的安裝位置(https相關,可選項,后面有說明)注:如果沒有安裝過 gcc、ssl等,執行檢查步驟可能會報錯,需要先安裝以下工具
$ yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel# 重新檢查 $ ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/webserver/pcre-8.453. 編譯 和 安裝
$ make && make install 安裝完成后,會在 /usr/local/webserver/ 目錄下生成一個 nginx 的目錄,這是我們指定的位置。 安裝后生成的 nginx 里面有四個目錄 (conf html logs sbin),配置文件在 conf/nginx.conf, 啟動文件在 sbin/nginx,先別著急啟動,我們先完成http的配置此時,/usr/local/webserver/nginx-1.22.0目錄 就不會再用到了,可以對無用目錄和文件進行刪除
PS: 完成后可以按需刪除安裝包和解壓目錄
$ rm -f /usr/local/webserver/pcre-8.45.tar.gz $ rm -f /usr/local/webserver/nginx-1.22.0.tar.gz# 安裝后解壓目錄也可以刪除,因為是文件夾,加上 -r 遍歷刪除 $ rm -rf /usr/local/webserver/nginx-1.22.04. 設置軟鏈
$ ln -s /usr/local/webserver/nginx/sbin/nginx /usr/bin/# 設置軟鏈后,可以嘗試在其他目錄使用以下命令看是否成功 $ nginx -v5. 創建專屬組和用戶
$ /usr/sbin/groupadd nginx $ /usr/sbin/useradd -g nginx nginx6. 配置nginx.conf
為避免篇幅影響目錄視覺,配置文件放在了最后,請移步至下面 “配置nginx的http和https” 進行配置完成后,再繼續 第7步操作
7. 檢查配置、啟動、測試(查看進程、網頁訪問)
# 檢查配置 $ nginx -t(檢查nginx.conf配置是否正確) $ nginx -s reload(重新載入配置文件,通常配合-t使用,在修改了nginx.conf且檢查無誤之后) # 啟動 $ nginx# 查看進程 $ ps -ef | grep nginx # 其他的一些常用命令 $ nginx -s stop(停止 Nginx) $ nginx -s reopen(重啟 Nginx)$ systemctl status nginx.service(查看nginx服務狀態,通常配合-t使用)- 錯誤:
途中遇到個這個錯誤,上網查說是nginx.conf文件格式不是utf-8導致的,我看文件120行明明是注釋,這也能報錯?結果我查看服務器上的文件后才發現,是因為本地修改文件后上傳沒有覆蓋掉,而是每次上傳時內容追加到文件里去了,應該是lrzsz使用不當導致的烏龍事件
nginx: [emerg] “worker_processes” directive is duplicate in /usr/local/webserver/nginx/conf/nginx.conf:120
8. https依賴安裝(可選)
除此之外,如果需要 Rewrite 功能(將http訪問轉發到https),還需要安裝 PCRE,我選擇官使用網上目前最新且下載量最高的 v8.45 版本
安裝之前如果服務器沒有安裝過gcc相關的編譯工具和庫文件,需要先進行安裝,如果已安裝會自動跳過并提示
$ yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel # 遠程拉取安裝包 $ cd /usr/local/webserver/ $ wget http://downloads.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz# 解壓安裝包: $ tar -zxvf pcre-8.35.tar.gz# 進入安裝包目錄 $ cd pcre-8.35# 編譯安裝 $ ./configure $ make && make install# 查看pcre版本,這時候已經可以全局使用下面的命令了 $ pcre-config --version下面就是 nginx.conf 的配置了,http 和 https 是在同一個文件里的
四、配置nginx的http和https
nginx.conf 文件內默認是有基礎配置的,建議把配置文件下載到本地,用其他編輯器(例如 VS code)修改完后,再上傳覆蓋掉原來的文件,不用擔心,同目錄下有一個原始文件的備份(nginx.conf.default)
注意:
可操作項,根據實際項目修改,https不需要的可以注釋掉 如果有Apache占用了80端口,將端口號改成其他端口 重點項在里面都標記了出來,http中有host配置,https中有host和ssl證書配置 修改完后,如果服務器已啟動過,使用命令重載一下配置 `$ nginx -s reload` 完成以下配置后可以回到 **第7步繼續** $ vim /usr/local/webserver/nginx/conf/nginx.confnginx.conf
user nginx; worker_processes 2; #設置與服務器CPU核心數一致, 也可以使用 autoerror_log /logs/nginx/error.log crit; #日志位置和級別#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/nginx/access.log main;sendfile on;tcp_nopush on;tcp_nodelay on;#keepalive_timeout 0;keepalive_timeout 65;gzip on;# HTTP 服務server {listen 80;server_name localhost; #重點1,修改為主機名或域名rewrite ^(.*)$ https://$server_name$1 permanent; #將所有HTTP請求通過rewrite指令重定向到 HTTPS#charset koi8-r;#access_log logs/host.access.log main;location / {root html; #重點2,如要自定義路徑請修改,默認是nginx/html/index index.html index.htm; #根索引文件,也就是輸入ip或域名后在瀏覽器訪問的第一頁面}error_page 404 /404.html;# redirect server error pages to the static page /50x.htmlerror_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}# HTTPS 服務server {listen 443 ssl;server_name localhost; #重點1,修改為主機名或域名# 證書可以用openssl命令生成,也可以直接到購買的域名商里下載 Nginx使用的ssl證書,# 然后上傳到 nginx.conf 同一目錄下ssl_certificate cert.pem; #重點2,ssl證書ssl_certificate_key cert.key; #重點3,ssl證書keyssl_session_cache shared:SSL:1m;ssl_session_timeout 10m; #超時# 加密協議等等ssl_protocols TLSv1 TLSv1.1 TLSv1.2;# ssl_ciphers PROFILE=SYSTEM;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_prefer_server_ciphers on;location / {root html; #重點4,如要自定義路徑請修改index index.html index.htm;}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}}五、結束
服務啟動成功后,在瀏覽器訪問服務器地址,如果修改了80或者443端口記得在訪問時加上(如果配置了域名可以使用域名),另外在云服務器設置里設置網絡防火墻 入規則 端口,開放http(80)和https(443)端口。如果使用域名訪問記得在域名設置里 解析到當前服務器的ip上。
阿里云服務器在:服務器實例 -> 網絡與安全:安全組 -> 配置規則 -> 入方向
騰訊云服務器在:服務器實例 -> 防火墻
總結
以上是生活随笔為你收集整理的Linux Nginx的安装与配置(全程图文记录超详细)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ipv6使用免费的DDNS(dynv6.
- 下一篇: linux 其他常用命令