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

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

一、购买服务器

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


点击图片链接去买一台吧,建立个人博客,试着玩玩,既便于记笔记,又可以学习服务器的配置知识,给自己多了份技能,何乐不为?如果大家有问题都可以咨询,或者加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,推荐使用默认设置)

域名可以解析到两个nginx上吗 多个域名配在同一个nginx_html


 


  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

域名可以解析到两个nginx上吗 多个域名配在同一个nginx_域名可以解析到两个nginx上吗_02


 


  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

域名可以解析到两个nginx上吗 多个域名配在同一个nginx_服务器_03

4、重启 nginx

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

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


 


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

2)重新加载配置文件:

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


 


  1. ./nginx -s reload

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

域名可以解析到两个nginx上吗 多个域名配在同一个nginx_nginx_04

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

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

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

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

域名可以解析到两个nginx上吗 多个域名配在同一个nginx_nginx_05

这个是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.  
6. #charset koi8-r;
7.  
8. #access_log  logs/host.access.log  main;
9.  
10. location / {

11. root   /web/www.yyy.com;
12. index  index.html index.htm;
13. }
14.  
15. # location / {

16. #     root   html;
17. #     index  index.html index.htm;
18. # }
19.  
20. #error_page  404              /404.html;
21.  
22. # redirect server error pages to the static page /50x.html
23. #
24. error_page   500 502 503 504  /50x.html;
25. location = /50x.html {

26. root   html;
27. }
28.  
29. # proxy the PHP scripts to Apache listening on 127.0.0.1:80
30. #
31. #location ~ \.php$ {

32. #    proxy_pass   http://127.0.0.1;
33. #}
34.  
35. # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
36. #
37. #location ~ \.php$ {

38. #    root           html;
39. #    fastcgi_pass   127.0.0.1:9000;
40. #    fastcgi_index  index.php;
41. #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
42. #    include        fastcgi_params;
43. #}
44.  
45. # deny access to .htaccess files, if Apache's document root
46. # concurs with nginx's one
47. #
48. #location ~ /\.ht {

49. #    deny  all;
50. #}
51. }

上传后重启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.  
5. #charset koi8-r;
6.  
7. #access_log  logs/host.access.log  main;
8.  
9. location / {

10. # root   /web/www.xxx.com;
11. index  index.html index.htm;
12. }

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

10. # root   /web/www.yyy.com;
11. index  index.html index.htm;
12. }

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

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

五、服务器安全组

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

域名可以解析到两个nginx上吗 多个域名配在同一个nginx_nginx_06

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

域名可以解析到两个nginx上吗 多个域名配在同一个nginx_服务器_07

填写相关资料和设置:

域名可以解析到两个nginx上吗 多个域名配在同一个nginx_域名可以解析到两个nginx上吗_08

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

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