侧边栏壁纸
博主头像
biubiubiu博主等级

刻意练习,每日精进

  • 累计撰写 22 篇文章
  • 累计创建 5 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

个人博客网站配置Nginx服务

wdc
wdc
2023-09-17 / 0 评论 / 0 点赞 / 115 阅读 / 5826 字
  1. 创建文件目录

    mkdir -p /docker/nginx/conf/conf.d /docker/nginx/html /docker/nginx/log /docker/nginx/cert
    touch /docker/nginx/conf/nginx.conf
    
  2. 创建nginx容器

    docker run -itd --name nginx -p 80:80 -p 443:443 \
    -v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /docker/nginx/conf/conf.d:/etc/nginx/conf.d \
    -v /docker/nginx/html:/usr/share/nginx/html \
    -v /docker/nginx/log:/var/log/nginx \
    -v /docker/nginx/cert:/etc/nginx/cert \
    nginx
    
    • -P 80:80 -p 443:443
      • 宿主机和容器做端口映射,443端口是为了配置SSL
    • -v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      • nginx.conf是nginx的核心配置文件,映射到宿主机便于管理
    • -v /docker/nginx/conf/conf.d:/etc/nginx/conf.d
      • conf.d 目录我一般用来存网站的配置文件,映射到宿主机便于管理
    • -v /docker/nginx/html:/usr/share/nginx/html
      • /usr/share/nginx/html 目录主要存放的是静态网页文件
    • -v /docker/nginx/log:/var/log/nginx
      • /var/log/nginx 是nginx的日志目录,映射到宿主机,便于查看nginx访问日志或者错误日志
    • -v /docker/nginx/cert:/etc/nginx/cert
      • /etc/nginx/cert 是我自己创建用来存放SSL证书的目录
  3. 申请SSL证书

    网上有很多获取证书的方法,这里就不赘述了。我申请的阿里云的免费证书,可以参考这篇文章

    证书申请成功并下载以后,分别是一个key和crt文件,上传到服务器 /docker/nginx/cert 目录,就像这样:

    root@hecs-148770:~# ls /docker/nginx/cert/
    scswww.bbbwdc.com.crt  scswww.bbbwdc.com.key
    
  4. 网站配置

如果是云服务器,请确保安全组规则允许访问80和443端口

/docker/nginx/conf/nginx.conf

user  root;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
    # Nginx默认配置为1M,在上传Halo主题时会导致上传失败
    client_max_body_size 50M;
    include /etc/nginx/conf.d/*.conf;
}

我的网站配置:/docker/nginx/conf/conf.d/bbbwdc.conf

server {
    listen  443 ssl;
    server_name      www.bbbwdc.com;
    
    # SSL证书文件路径
    ssl_certificate /etc/nginx/cert/scswww.bbbwdc.com.crt;
    # SSL证书私钥文件路径
    ssl_certificate_key /etc/nginx/cert/scswww.bbbwdc.com.key;

    # 访问日志
    access_log /var/log/nginx/access_bbbwdc.log;

    # 错误日志
    error_log /var/log/nginx/error_bbbwdc.log;

	# 指定使用的SSL协议版本。这里使用了TLSv1.2和TLSv1.3
	ssl_protocols TLSv1.2 TLSv1.3;  
	
	# 指定使用的加密算法套件
    ssl_ciphers HIGH:!aNULL:!MD5;
    
    # 指定服务器偏好的加密算法套件
    ssl_prefer_server_ciphers on;
    
    # 指定SSL会话缓存的类型和大小。这里选择了共享缓存,大小为10MB
    ssl_session_cache shared:SSL:10m;  
    
    # 指定SSL会话的超时时间。这里设置为10分钟
    ssl_session_timeout 10m;  
    
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
	    proxy_pass http://你的服务器IP:8080;
    }
}

注意更换为自己的服务器IP

配置修改后,记得重启容器,查看容器日志检查配置是否生效

  1. http 转 https

上面的配置完成以后,你会发现在浏览器访问443端口是https,但是访问其他端口还是http,所以我们需要将所有http请求重定向到https

我的重定向配置在:/docker/nginx/conf/conf.d/default.conf

server {
    listen 80;
    server_name bbbwdc.com;
    access_log /var/log/nginx/access_bbbwdc.log;
    error_log /var/log/nginx/error_bbbwdc.log;
    # 转发规则
    location / {
        proxy_pass http://你的服务器IP:443;

        # 设置代理相关的头信息
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

重启nginx容器

ok,这样一个简单的Nginx服务器就配置完成啦,可以打开我的博客看下效果。

0

评论区