云服务器Nginx配置:实现多个域名对应访问同一台服务器的不同目录

最近玩阿里云的服务器比较多,因项目的需要,公司购买了几台云服务器,然而这些服务器配置和域名相关事情都丢给我【一名Web前端工程师】了,我能说什么呢,除了无语还是无语。不过功夫不负有心人,居然都被我搞定了。

新的技术总是会遇到很坑多,今天就分享点关于云服务器Nginx配置的知识吧。以阿里云ECS服务器配置为案例。

一、购买服务器

买买买,绝逼不是问题,相信大家都会吧,按照流程走,最主要的是否有优惠,阿里云服务器现在搞活动,新买2折哦,一台服务器一年才几百,推荐活动如下:

870x96.jpg

点击图片链接去买一台吧,建立个人博客,试着玩玩,既便于记笔记,又可以学习服务器的配置知识,给自己多了份技能,何乐不为?如果大家有问题都可以咨询,或者加QQ群讨论295431592讨论。

二、配置服务器环境-nginx

购买完服务器,我们发现服务器上就是空空的一个壳子,啥都没有,突然联想到刚来深圳的时候租房子,什么都要自己去买和配置。我们公司的项目主要用nginx来搭建,所以第一步就装nginx,这里我以CentOS7.0安装Nginx为例,简单列举下命令执行的操作。

1、安装准备

首先由于nginx的一些模块依赖一些lib库,所以在安装nginx之前,必须先安装这些lib库,这些依赖库主要有g++、gcc、openssl-devel、pcre-devel和zlib-devel 所以执行如下命令安装。

 
  1. yum install gcc-c++
  2. yum install pcre pcre-devel
  3. yum install zlib zlib-devel
  4. yum install openssl openssl–devel

2、安装Nginx

安装之前,最好检查一下是否已经安装有nginx

 
  1. find -name nginx

如果系统已经安装了nginx,那么就先卸载

 
  1. yum remove nginx

然后开始安装
首先进入/usr/local目录

 
  1. cd /usr/local

从官网下载最新版的nginx

 
  1. wget -c https://nginx.org/download/nginx-1.12.1.tar.gz

(注:版本号可更改,去官网查看最新版本号修改即可)

解压nginx压缩包

 
  1. tar -zxvf nginx-1.12.1.tar.gz

会产生一个nginx-1.12.1 目录,这时进入nginx-1.12.1 目录

 
  1. cd nginx-1.12.1

接下来安装,使用–prefix参数指定nginx安装的目录,make、make install安装

 
  1. ./configure

(默认安装在/usr/local/nginx,推荐使用默认设置)

1.png

 
  1. 不建议自定义设置 自定义配置 ./configure \
  2. –prefix=/usr/local/nginx \
  3. –conf-path=/usr/local/nginx/conf/nginx.conf \
  4. –pid-path=/usr/local/nginx/conf/nginx.pid \
  5. –lock-path=/var/lock/nginx.lock \
  6. –error-log-path=/var/log/nginx/error.log \
  7. –http-log-path=/var/log/nginx/access.log \
  8. –with-http_gzip_static_module \
  9. –http-client-body-temp-path=/var/temp/nginx/client \
  10. –http-proxy-temp-path=/var/temp/nginx/proxy \
  11. –http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
  12. –http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
  13. –http-scgi-temp-path=/var/temp/nginx/scgi
  14. (注:将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录)

执行:

 
  1. make

2.png

 
  1. make install

这样就安装完成了,如果没有报错,顺利完成后,最好看一下nginx的安装目录。

 
  1. whereis nginx //where和is要连这些,中间没有空格

3、启动和停止nginx

首先我们打开nginx的目录,

 
  1. cd /usr/local/nginx/sbin/

然后进行如下操作:

 
  1. ./nginx
  2. ./nginx -s stop
  3. ./nginx -s quit
  4. ./nginx -s reload
  5. ./nginx -s quit: 此方式停止步骤是待nginx进程处理任务完毕进行停止。
  6. ./nginx -s stop: 此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。

启动后,我们试着查询下nginx进程:

 
  1. ps aux | grep nginx

3.png

4、重启 nginx

1)先停止再启动(推荐):

对 nginx 进行重启相当于先停止再启动,即先执行停止命令再执行启动命令。如下:

 
  1. ./nginx -s quit
  2. ./nginx

2)重新加载配置文件:

当 nginx 的配置文件 nginx.conf 修改后,要想让配置生效需要重启 nginx,使用 -s reload 不用先停止 nginx 再启动 nginx 即可将配置信息在 nginx 中生效,如下:

 
  1. ./nginx -s reload

启动成功后,在浏览器可以看到如下页面:

4.png

到这里,如果一切顺利的话,我们就成功安装完成nginx啦,对于小白,大家只要按照这个步骤走,应该没多大问题,如有问题可以咨询呢。

三、配置网站目录和域名解析

网站域名这个很简单,首先大家点击:购买域名,去买一个,就可以了,然后把域名解析到刚才购买的服务器上即可,这个操作简单呢,有不懂可以问,不多说了。这里主要想讨论网站配置:

众所周知,我们访问一个域名,是要指定访问路径,这个我们可以在nginx里进行配置,如下图:

111.png

这个是nginx配置文件是在/usr/local/nginx/conf下的nginx.conf文件,我们可以打开此文件,就可以看到了,最关键是在标记的2处:

第一处是我们的监听端口,一般默认是80端口,然后就是server_name,这个是访问的服务器地址呢,可以用IP和域名等;

第二处是我们网站的指定根目录。

根据您网站的实际情况,配置好后,上传到服务器,然后重启nginx服务器【上面已有命令操作,参考】。

然后我们用配置好的server_name或者解析好的域名就可以访问了。

OK,基本知识就上述那么多了,接下来是最重要的内容了,也是本篇文章的主题。

四、多个域名兼顾一台服务器

一台服务器,对于小公司来说,只放一个网站太浪费了,我们需要放多个网站,如何实现呢?

其实方法有多种,根据你的配置不同,操作也不同,我们还是以nginx来具体说明。

打开/usr/local/nginx/conf下的nginx.conf文件,然后把

 
  1. server {
  2. ….
  3. }

多复制一套出来,改下上面的两处(端口改成81、服务器以及网站目录)即可,如下:

 
  1. server {
  2. listen 81;
  3. server_name www.yyy.com;
  4. # root /web/www.yyy.com;
  5. #charset koi8-r;
  6. #access_log logs/host.access.log main;
  7. location / {
  8. root /web/www.yyy.com;
  9. index index.html index.htm;
  10. }
  11. # location / {
  12. # root html;
  13. # index index.html index.htm;
  14. # }
  15. #error_page 404 /404.html;
  16. # redirect server error pages to the static page /50x.html
  17. #
  18. error_page 500 502 503 504 /50x.html;
  19. location = /50x.html {
  20. root html;
  21. }
  22. # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  23. #
  24. #location ~ \.php$ {
  25. # proxy_pass http://127.0.0.1;
  26. #}
  27. # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  28. #
  29. #location ~ \.php$ {
  30. # root html;
  31. # fastcgi_pass 127.0.0.1:9000;
  32. # fastcgi_index index.php;
  33. # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  34. # include fastcgi_params;
  35. #}
  36. # deny access to .htaccess files, if Apache's document root
  37. # concurs with nginx's one
  38. #
  39. #location ~ /\.ht {
  40. # deny all;
  41. #}
  42. }

上传后重启ngnix,就搞定了,然后打开正常。

别高兴太早,问题来了,发现打开第二个网站ww.yyy.com,却打不开,并且只能ww.yyy.com:81才可以打开,奇怪了?

其实这个问题我也纠结了一会,后面才发现是监听端口没处理好,因为我们上面的设置方法是固定了根目录和端口,所以每次打开只能固定域名,那岂不是必须一个域名对应一个IP?显然这不是我们想要的结果。于是我改了下2个网站配置片段代码。

 
  1. listen 80;
  2. server_name www.xxx.com;
  3. root /web/www.xxx.com;
  4. #charset koi8-r;
  5. #access_log logs/host.access.log main;
  6. location / {
  7. # root /web/www.xxx.com;
  8. index index.html index.htm;
  9. }
 
  1. listen 80;
  2. server_name www.yyy.com;
  3. root /web/www.yyy.com;
  4. #charset koi8-r;
  5. #access_log logs/host.access.log main;
  6. location / {
  7. # root /web/www.yyy.com;
  8. index index.html index.htm;
  9. }

大家可以发现,我们把监听端口都改成80了,并且吧location目录的root目录注释了,放到外面去了。这样的处理方法就可以正常了,用www.xxx.com和www.yyy.com分别可以访问到对应的网站了。

其实nginx的监听功能可以这样玩,根据你的设置可以监听不同的项目目录。一般情况下这样处理,相比我们固定目录,是有些不妥的,会影响打开速度,但是影响也不是很大,在经济拮据的条件下,还可以接受吧。

五、服务器安全组

上面忘记说到安全问题了,如果不设置,网站也是打不开的哦。很多小白对于“服务器安全组”有些陌生,其实不然,简单来说就是给服务器配置安全端口和访问IP权限而已,这里不想多解释,如下图:

222.png

我们打开,点击配置规则,然后点击右上角

image.png

填写相关资料和设置:

333.png

上面不用我多解释吧,填好,确定即可。

好像差不多了,讲解不是很详细,毕竟服务器配置内容太多了,还有里面很多很多细节,需要大家慢慢去思考和摸索。

总结

现在流行全栈工程师,作为一名WEB前端开发工程师,对于服务器的配置技术知识,也应该去深入了解;也许你有创业的那一天,不用去求别人,自己都搞定,难道不是很好吗?

如有问题,欢迎咨询哦,不吝赐教!

原文链接:https://blog.csdn.net/tiao321/article/details/111479187

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享