搭建nginx服务与并支持域名绑定与https

##搭建nginx服务与并支持域名绑定与https

###一、安装nginx

1.登录http://nginx.org/官网

根据下面的图片引导找到Pre-Built Packages for Stable version
这里写图片描述

这里写图片描述

这里写图片描述

2.按照官网的说明进行安装

Pre-Built Packages for Stable version

To set up the yum repository for RHEL/CentOS, create the file named /etc/yum.repos.d/nginx.repo with the following contents:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1

Replace “OS” with “rhel” or “centos”, depending on the distribution used, and “OSRELEASE” with “6” or “7”, for 6.x or 7.x versions, respectively.

首先创建文件vi /etc/yum.repos.d/nginx.repo

将contents复制进nginx.repo文件中,并安装要求进行修改

安装nginx执行 yum install nginx 即可安装完成!

二、配置域名

1.vi /etc/nginx/conf.d/default.conf

server {
    listen       80;
    listen       443 ssl;
    server_name  www.bzlhn.xyz bzlhn.xyz; //修改为自己的域名

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html; //静态页面存放的位置,可以将本目录下的文件替换成自己的html页面
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

2.启动systemctl start nginx可以看到页面了

这里写图片描述

三、设置https

1.一个免费的https网站https://letsencrypt.org/

2.找到安装方法

这里写图片描述

这里写图片描述

选择自己的操作系统,lz的是linux centOS7

这里写图片描述

3.在安装之前首先检查自己的nginx是否监听了443端口,如果没有加上。

listen 443 ssl;

reload一下nginx

systemctl reload nginx

4.安装epel-release 执行命令

sudo yum install epel-release

5.安装certbot-nginx执行命令

sudo yum install certbot-nginx

按照提示选择

Is this ok [y/d/N]: y

6.执行命令

sudo certbot --nginx

提示你输入邮箱:

Enter email address (used for urgent renewal and security notices) (Enter ‘c’ to
cancel): onlyone_lihainan@163.com

后面的就是按照提示进行选择就可以了

7.重新加载

systemctl reload nginx

8.测试成功

这里写图片描述

四、请求转发

我们可能需要nginx进行请求的转发,比如当前台请求我们的服务器时,请求会先到达nginx再由nginx进行转发到相应的服务端口上。

转发到外网地址

  location /{
           proxy_pass  http://58.56.27.186:3667;
        }

转发到本机地址下的一个服务

 root   /www/take-out-java; //项目路径
    location / {
        proxy_pass   http://127.0.0.1:3667; //要转发到的地址
    }

设置自动更新https证书

# 打开定时任务编辑
crontab -e

# https证书auto-renew
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew

# 查看任务是否成功
crontab -l
# 查看相关日志
tail -f /var/log/cron -n 1000


手动更新证书有效期
certbot renew

遇到过的两个证书生成出现的问题:

1.python的模块版本的问题

报错提示:
ImportError: No module named 'requests.packages.urllib3'
运行以下命令后,成功解决
pip install requests urllib3 pyOpenSSL --force --upgrade
pip install --upgrade --force-reinstall 'requests==2.6.0'

2.openssl版本过低问题

报错提示:
raise ImportError("'pyOpenSSL' module missing required functionality. "
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.
解决:
装高版本pyOpenSSL即可

pip install 'idna<2.7,>=2.5'
pip install 'urllib3<1.23,>=1.21.1'

crontab 定时任务
执行crontab -e即可编辑定时任务,在编辑中输入下面命令即可 15 3 * */2 * certbot renew
这段定时命令为每隔两月凌晨 3:15执行命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值