nginx双网站部署

nginx 双网站部署

这两天刚考完研,想着把自己的个人的网站完善一下。于是买了一年的腾讯云 VPS , 折腾之路也开始了。真的是一步一步错,感觉错的越多,就懂的越多,也感谢自己的笨吧。毕竟对于折腾 nginx 这个自己只听过名字,其实也不甚了解的东西,经过爆肝一天多的时间,也还算总算掌握了一点眉目。想想还是有点小兴奋呢。也是有了这边博文,记录一下搭建过程中遇到的问题,以及处理问题的过程。权当 日后 回味吧!

问题复现基础条件

先说一下折腾这玩意儿的需求。

  1. 我只有一台 vps ,一个域名;
  2. 要在这个 vps 上面部署两个动态网站;
  3. 提前已经准备好了域名解析,以本站为例,本站域名:lonuslan.comwww.lonuslan.com均已经指向vps的ip地址。这里暂时将ip记为A。同时另一个网站adminlink.lonuslan.com也指向了A(这是我的一个收藏平时网站链接的平台,类似与浏览器收藏夹的功能)
  4. 网站实现的效果为:最终两个网站都能通过端口443(实现https安全访问,总感觉多一把锁,有个证书安全点,不至于裸奔)访问,只根据域名的不同使之转向不同的服务。
  5. 前期两个服务都已经搭建好了,也能通过域名访问,就是没有实现https的功能。其中www.lonuslan.com可以通过地址:http://www.lonuslan.com:9292(通过http+端口的形式访问,强迫症受不了这种方式),adminlink.lonuslan.com可以通过端口地址:http://adminlink.lonuslan.com:8000访问。
  • 任务:就是让他们通过 nginx 的反代都能实现 https 式的访问。就是这么简单的事情,硬是让我整了一天。

前期的知识储备,只知道nginx是一个可以做负载均衡和反向代理的玩意儿,需要通过修改配置文件去实现想要的某些功能。大概就是这样吧。

前期准备

安装 nginx ,我用的系统是centos7. 已更改 yum源。

yum -y list nginx

列出可支持的nginx。

yum install nginx

安装nginx,安装之后,查看nginx状态

systemctl status nginx

系统默认的配置文件地址通过查看上一条命令的提示,位于 /etc/nginx/nginx.conf
我来的第一步就是
vi /etc/nginx/nginx.conf
然后 .,$d删除全部,复制了网站的某份配置文件。然后错误不可避免的发生了。

2020.12.29 21.39 先吃吧鸡。

2020年3月4日更新

其实这个功能很早就实现了,奈何最近几天忙着搞 RMB ,就没怎么写博客了,这里算是最后总结一下吧。

首先,接上一步先恢复 nginx.conf 它默认的配置文件。以后建议对任何配置做修改的时候,先做备份,不然就要像我一样重装一次nginx

先备份配置(其实这里完全不用备份它,我只是记录一下方式)

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.old

如果我们打开该nginx.conf配置文件的话,会发现里面有这么一句: #include /etc/nginx/conf.d/*.conf,稍微了解点英文的意思就知道意思是它会包含/etc/ngin/conf.d目录下的所有后缀为.conf的配置文件。你可以按照以下两种方式新建你自己的配置:

  1. 我们要做的就是在该目录下新建一个任意名称后缀为.conf的配置文件,例如:
touch /etc/nginx/conf.d/mywebconf.conf
# 然后直接在编辑该文件即可
vim /etc/nginx/conf.d/mywebconf.nginx
  1. 当然,你也可以在任意位置新建一个配置文件,例如:
touch /lonuslan/nginx/myweb.conf
# 然后将它的路径加入nginx的默认配置文件nginx.conf中

这里的话,就是#include /lonuslan/nginx/myweb.conf。将这一句配置添加到/etc/nginx/nginx.conf配置中。

之后,使用nginx -t检查你的nginx配置的完整性。如果有错检查配置文件的内容是否正确或根据错误提示进行相应的改正!

之后,就是重启一下你的nignx服务:

systemctl restart nginx

这里贴一下我的配置文件,可以做个参考:

server {
    listen 80;
    listen 443 ssl; # 支持https
    server_name www.lonuslan.com; # 最终的访问域名
    ssl_certificate /solo/ssl/1_www.lonuslan.com_bundle.crt;  # ssl 证书目录
    ssl_certificate_key /solo/ssl/2_www.lonuslan.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_pass  http://www.lonuslan.com:9292;
        proxy_set_header  Host $http_host;
        proxy_set_header  X-Real-IP  $remote_addr;
        client_max_body_size  20m;
    }
}

server {
    listen 80;
    listen 443 ssl;
    server_name bolo.lonuslan.com;
    ssl_certificate /bolo/ssl/1_bolo.lonuslan.com_bundle.crt;  # ssl 证书目录
    ssl_certificate_key /bolo/ssl/2_bolo.lonuslan.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_pass  http://10.0.8.15:8080;
        proxy_set_header HOST $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        client_max_body_size 100m;	
    }
}

server {
    listen 80;
    listen  443  ssl;
    server_name  adminlink.lonuslan.com;
    ssl_certificate /adminlink/ssl/1_adminlink.lonuslan.com_bundle.crt;  # ssl 证书目录
    ssl_certificate_key /adminlink/ssl/2_adminlink.lonuslan.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_pass  http://adminlink.lonuslan.com:8000;
        client_max_body_size 20m;
    }
}

标题: nginx双网站部署
文章作者: lonuslan
文章链接: https://www.louislan.com/articles/2020/12/29/1609249173819.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hi I'm LouisLan
    评论
    0 评论
avatar

取消