搭建https化的个人网站Nginx(一)

前言

作为一名“优秀”的java程序员,不仅仅要会敲代码,一定要上得厅堂,下得厨房。服务器也能搞一搞。所以,搞个网站玩玩。本篇主要是讲怎么安装Nginx以及如何配置https。

一、服务器和域名

我买的阿里云的服务器和域名,年龄在24之前是学生价,一百来块钱就能搞个服务器,域名1块钱一年。其实也可以买国外的服务器,可能便宜点,另外买国外的域名不需要备案。花1块钱买了个域名,用了半个多月的时间来备案,真的是麻烦死了。万事俱备,只欠东风了。

二、Nginx

Nginx是啥我就不说了,为了更加安全,我打算搭建https化的网站,所以就需要SSL证书。放心,阿里云提供免费的SSL证书。首先我们安装nginx。

1、新建servers文件夹

cd /usr/local && mkdir servers

2、进入servers文件夹,wget 下载nginx压缩包

cd servers

wget http://nginx.org/download/nginx-1.14.1.tar.gz

3、解压 

tar -zxvf nginx-1.14.1.tar.gz

4、安装所需要的依赖:

yum install -y gcc

yum install -y pcre

yum install -y pcre-devel

yum install -y zlib

yum install -y zlib-devel

yum install -y openssl openssl-devel

5、进行configure配置:一定要配置 --with-http_ssl_module,这是开启SSL。

cd nginx-1.14.1 && ./configure --prefix=/usr/local/servers/nginx --with-http_stub_status_module --with-http_ssl_module

6、编译安装,是在解压的目录下

make && make install

7、上传证书文件

在阿里云下载Nginx版本的证书,没有的话可以免费申请,但是你要有一个域名。

阿里云管理控制台---->域名列表---->管理---->免费开启SSL证书----->单域名免费证书

新建一个文件夹用来存放证书文件,随便起名字,且要控制访问权限。

在conf文件夹下新建一个cert文件夹,把证书上传到该文件加下,域名以domain.com为例

7、配置,编辑 /usr/local/servers/nginx/conf下的nginx.conf配置文件

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

取消https部分的注释,编辑如下,部分内容修改成自己的配置即可。

    upstream myapp {
        server 服务器ip:8080;
    }

    # HTTPS server
    #   
    server {
        listen       443 ssl;
        server_name  www.domain.com;

        ssl_certificate      cert/www/domain.com.pem;
        ssl_certificate_key  cert/www.doamin.com.key;

        ssl_session_cache    shared:SSL:1m;
        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 / {
            root   html;
            index  index.html index.htm;
            
            #以下为反向代理至tomcat的配置
            # proxy_pass  http://myapp;
            # proxy_redirect     off;
            # proxy_set_header   Host        $host;
            # proxy_set_header   X-Real-IP   $remote_addr;
        }
        
        location = / {
            root   html;
            index  index.html index.htm;
        }
    }

为了配置全部https的访问,可以将80端口的访问请求全部转发到443端口上。

    server {
        listen       80;
        server_name  www.domain.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        
        rewrite ^(.*)$ https://$host$1 permanent; #将所有http请求通过rewrite重定向到https。

        location / {
            root   html;
            index  index.html index.htm;
        }
    }

8、启动

/usr/local/servers/nginx/sbin/nginx

谷歌浏览器访问你的域名,右上角如果出现绿色小锁和安全字样,就说明配置正确了。

9、其他命令

停止   /usr/local/servers/nginx/sbin/nginc -s stop

重启  /usr/local/servers/nginx/sbin/nginx -s reload

三、添加到系统服务

vim /usr/lib/systemd/system/nginx.service

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
LimitNOFILE=1000000
LimitNPROC=1000000
LimitCORE=1000000

[Install]
WantedBy=multi-user.target

systemctl start|stop|reload|restart|status nginx.service

开机自启:

systemctl enable nginx.service

关闭开机自启:

systemctl disable nginx.service

四、自签证书

新建证书生成脚本文件gencert.sh,添加以下内容

vim gencert.sh

#!/bin/sh

# create self-signed server certificate:

read -p "Enter your domain [www.example.com]: " DOMAIN

echo "Create server key..."

openssl genrsa -des3 -out $DOMAIN.key 1024

echo "Create server certificate signing request..."

SUBJECT="/C=US/ST=Mars/L=iTranswarp/O=iTranswarp/OU=iTranswarp/CN=$DOMAIN"

openssl req -new -subj $SUBJECT -key $DOMAIN.key -out $DOMAIN.csr

echo "Remove password..."

mv $DOMAIN.key $DOMAIN.origin.key
openssl rsa -in $DOMAIN.origin.key -out $DOMAIN.key

echo "Sign SSL certificate..."

openssl x509 -req -days 3650 -in $DOMAIN.csr -signkey $DOMAIN.key -out $DOMAIN.crt

echo "TODO:"
echo "Copy $DOMAIN.crt to /etc/nginx/ssl/$DOMAIN.crt"
echo "Copy $DOMAIN.key to /etc/nginx/ssl/$DOMAIN.key"
echo "Add configuration in nginx:"
echo "server {"
echo "    ..."
echo "    listen 443 ssl;"
echo "    ssl_certificate     /etc/nginx/ssl/$DOMAIN.crt;"
echo "    ssl_certificate_key /etc/nginx/ssl/$DOMAIN.key;"
echo "}"

执行脚本

./gencert.sh

内网没有域名的话,域名输入地方填写ip就可以

然后会生成四个文件

  • domain.crt:自签名的证书
  • domai.csr:证书的请求
  • domai.key:不带口令的Key
  • domai.origin.key:带口令的Key

在nginx的server中配置即可

server {
    ...
    ssl on;
    ssl_certificate     /etc/nginx/ssl/dmain.crt;
    ssl_certificate_key /etc/nginx/ssl/domain.key;
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值