centos 7 源碼方式安裝nginx(1.16.1) + ssl + 阿里證書配置


nginx 1.18.0版本的安裝請移步:https://www.cnblogs.com/nickchou/p/12978724.html

直接使用yum方式安裝的ngninx默認是不支持ssl的,所以需要從代碼編譯安裝

一、查看要安裝的版本

http://nginx.org/en/download.html
這里我們還是選擇的穩定版1.16.1

二、先安裝依賴

yum install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel -y

三、下載源碼

切換到/usr/local/src目錄下,下載源代碼解壓

cd /usr/local/src
wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar -zxvf nginx-1.16.1.tar.gz

四、編譯源代碼

cd /usr/local/src/nginx-1.16.1
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

編譯成功后的截圖

編譯報錯的解決辦法,沒有報錯直接跳過

  1. 報錯:./configure: error: the HTTP rewrite module requires the PCRE library.
    問題原因:編譯安裝nginx需要pcre包,未安裝的話會報錯
    解決辦法:
    yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel

  2. 報錯:File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
    問題原因:yum采用python作為命令解釋器,原來系統自帶的python解釋器為python2.7,系統默認的解釋器為python3.7
    解決辦法:
    vim /usr/bin/yum
    修改第一行為:#!/usr/bin/python2.7
    vi /usr/libexec/urlgrabber-ext-down
    修改第一行為:#!/usr/bin/python2.7

  3. 報錯:File "/bin/yum-config-manager", line 135 except yum.Errors.RepoError, e:
    問題原因:yum采用python作為命令解釋器,原來系統自帶的python解釋器為python2.7,系統默認的解釋器為python3.7
    解決辦法:
    vim /bin/yum-config-manager
    修改第一行為:#!/usr/bin/python2.7

  4. 報錯:./configure: error: SSL modules require the OpenSSL library.
    問題原因: 缺少SSL庫
    解決辦法:yum -y install openssl openssl-devel

五、安裝nginx

如果nginx已經安裝了的話用指令

make

如果沒有安裝或者已卸載的話

make && make install

六、查看nginx的版本信息

查看編譯后的nginx版本

/usr/local/src/nginx-1.16.1/objs/nginx -V


查看安裝后的nginx版本

/usr/local/nginx/sbin/nginx -V

七、更新nginx,這一步是為裝過nginx更新bin文件用的,安裝的話忽略

cp objs/nginx /usr/local/nginx/sbin/

復制bin文件后再核對下版本

/usr/local/nginx/sbin/nginx -V

八、配置開機自啟動

vim /lib/systemd/system/nginx.service

復制以下內容保存(按ESC后:wq保存退出)

[Unit]
Description=nginx service
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

設置開機自啟動

systemctl enable nginx


啟動、查看狀態、重啟nginx,指令3件套

systemctl start nginx
systemctl status nginx
systemctl restart nginx

可以reboot重啟機器后再查看nginx狀態

九、配置nginx環境變量

一般修改配置后用 nginx -s reload 重啟

nginx -s reload

出現以下提示是沒有配置環境變量

打開/etc/profile

vim /etc/profile

在最后一行 追加下面2行配置(ESC :wq 保存退出)

PATH=$PATH:/usr/local/nginx/sbin
export PATH

使配置生效后,就可以用nginx -s reload

source /etc/profile

十、阿里雲證書配置

把阿里雲申請的證書放到目錄 /usr/local/nginx/conf/cert (文件也可以自己指定)
配置域名解析

vi  /usr/local/nginx/conf/nginx.conf

增加配置,把下面的www.yuming.com改成自己的域名

server {
    listen       80;
    server_name  www.yuming.com;
    return       301 https://$server_name$request_uri;
}
server {
    listen       443 ssl;   // nginx1.15之后用這個語法
    server_name  wwww.yuming.com;
    ssl_certificate   cert/www.yuming.com.pem;
    ssl_certificate_key  cert/www.yuming.com.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://localhost:8001;
        proxy_redirect off;
    }
}


免責聲明!

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



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