zoukankan      html  css  js  c++  java
  • centos 7 源码方式安装nginx(1.18.0) + ssl + 阿里证书配置

    直接使用yum方式安装的ngninx默认是不支持ssl的,所以需要从代码编译安装

    一、查看要安装的版本

    http://nginx.org/en/download.html
    这里我们选择的稳定版1.18.0

    二、先安装依赖

    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.18.0.tar.gz
    tar -zxvf nginx-1.18.0.tar.gz
    

    四、编译源代码

    cd /usr/local/src/nginx-1.18.0
    ./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

    如果是第一次安装或已卸载后安装的话,用指令:

    make && make install
    

    六、编译更新nginx版本 (初次安装跳过)

    如果已经安装过,要更新nginx版本的话,用指令:

    make
    

    把上一步make编译后的nginx文件,覆盖指定文件

    cp /usr/local/src/nginx-1.18.0/objs/nginx /usr/local/nginx/sbin/
    

    七、查看nginx的版本信息

    查看编译后的nginx版本 ,注意下图红框部分有--with-http_ssl_module说明就是带ssl参数编译的

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

    查看安装or更新后的nginx版本,也可以直接nginx -V

    /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
    

    十、阿里云SSL证书配置

    把阿里云申请的证书放到目录 /data/cert 或者/usr/local/nginx/conf/cert (路径自己指定)
    注意:服务器安全组要开启80/443端口

    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之后用这个语法,老的语法是ssl on;
            server_name  wwww.yuming.com;
            ssl_certificate   /data/cert/www.yuming.com.pem;
            ssl_certificate_key  /data/cert/www.yuming.com.key;
            ssl_session_timeout 5m;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            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;
            }
        }
    

    十一、腾讯云SSL证书配置

    基本和阿里云差不多,在ssl_ciphers处有差异
    注意:服务器安全组要开启80/443端口,申请证书的二级域名要和绑定的域名一致,如下例:service,否则会有不安全的警告

        server {
            listen       80;
            server_name  service.yuming.com;
            return       301 https://$server_name$request_uri;
        }
        server {
            listen       443 ssl;  # nginx1.15之后用这个语法,老的语法是ssl on;
            server_name  service.yuming.com;
            ssl_certificate   /data/cert/1_service.yuming.com_bundle.crt;
            ssl_certificate_key  /data/cert/2_service.yuming.com.key;
            ssl_session_timeout 5m;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;        
            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:8081;
                proxy_redirect off;
            }
        }
    

    十二、Nginx其他配置

    1、配置静态文件访问,autoindex on可以设置为开启索引,可自行设置

        server {
            listen 80;
            server_name res.yuming.com;
            location / {
                root   /data/resource/;
                autoindex off;
            }
        }
    

    2、nginx限制ip访问

        server {
            listen       80;
            server_name  service.yuming.com;
            allow 61.18.22.155;     # 限制固定ip访问
            allow 61.18.22.0/24;    # 0/24意思是ip的前3段一致,值范围[8,16,24]
            deny all;               # 拒绝所有的
            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:8003;
                proxy_redirect off;
            }
        }
    
  • 相关阅读:
    webpack和webpack-dev-server安装配置
    webpack和webpack-dev-server安装配置
    Json和Jsonp
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    读undo 导致db file sequential read
    direct path read 研究
    SpringCloud的版本
    521忘记送大家礼物了,补上!
  • 原文地址:https://www.cnblogs.com/nickchou/p/12978724.html
Copyright © 2011-2022 走看看