AWS完全指引手册第05节-安装Nginx

2014-05-19 17:53:51

[开发运维 | Dev Ops] , , ,

为什么要用nginx 不用Apache,个人感觉其实都差不多,功能都相近。不过跟Apache不同,Nginx 更改了配置需要重新启动服务,看上去好像比Apache要麻烦,实际上,是所有的配置文件都是要经过编译而不像Apache,每一次访问都要读.htaccess。从另外一方面考虑,这提升了服务器性能。还有Nginx 处理并发能力很强,这个就不能够直观地表现出来了,总体来说,Nginx比Apache感觉上要更加轻盈。

 

 

AWS已经有Nginx的源了,所以非常方便,直接

sudo yum install nginx

 

安装完成后启动

sudo service nginx start

 

接下来访问你的Public IP, 你就可以看到Nginx的页面了

 

AWS Nginx 安装

 

没有看到这个页面? 请检查你的防火墙是否有开启80端口。在EC2 Dashboard 的 Security Groups里面,调整你的服务器对应的Security Group的设置,使其80端口开放给公众。

 

 

上面也写得比较清楚了,Nginx的设置文件在/etc/nginx

下面再讲讲如何规范地设置nginx

 


 

 

先上一个页面,如果有这里说不清楚的,到官方的文档看看就行了http://nginx.org/

 

1.添加nginx配置文件高亮

VIM本来是不配有Nginx 配置文件的高亮功能的,高亮代码能够让你更加方便地阅读和修改你的配置文件。
这是vim提供代码高亮设置文件的官方网址 http://www.vim.org/scripts/script.php?script_id=1886

主要内容是

  1. 在用户根目录(/root/ 或者 /home/ec2-user/,因为编辑配置文件要用到管理员权限,所以这里以root举例)新建.vim文件夹
    sudo mkdir root/.vim
  2. 在该.vim文件夹里面新建syntax 文件夹
    sudo cd root/.vim
    sudo mkdir syntax
  3. 下载代码高亮文件到该文件(syntax)夹
    sudo cd syntax 
    sudo wget http://www.vim.org/scripts/download_script.php?src_id=19394 
    sudo mv download_script.php?src_id=19394 nginx.vim
  4. 在.vim文件夹目录下创建filetype.vim并输入以下内容
    au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/conf/* if &ft == '' | setfiletype nginx | endif

 

 

2.配置基础文件nginx.conf

使用vim打开/etc/nginx/nginx.conf 可以看到基本的设定。

个人的偏好设定是

  1. 关闭所有的access_log,(access_log是每一个访问者访问都生成一条记录,这个对于小型服务器来说压力或许会比较大)
  2. 开启gzip 压缩页面
  3. 将http里面的server这段都删掉,详细的配置在/etc/nginx/conf.d/里面,创建.conf结尾的文件进行配置,这样感觉上会比较有条理一点。

于是最终的设定变成了:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx-error.log crit;
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  off;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

 

 

 

3.设置虚拟主机

在/etc/nginx/conf.d/里面有个default.conf ,大家可以在这里面进行设定,不过要注意的是,升级nginx可能会将default.conf文件覆盖掉。如果可能最好还是新建一个新的文件,并把这个文件给删除掉。

在这里还要说一个个人偏好的问题,其实目录设定在哪里都没有问题,不过需要注意的是,Nginx 是用nginx这个角色(在/etc/nginx/nginx.conf 开始处有设定),执行和读取目录和文件的。因此务必确保nginx有足够的权限访问网站根目录。目前就这样吧:

将网站aws.masterchan.me的目录设置在:
/var/www/aws.masterchan.me/
将网站的默认目录设置在:
/var/www/default/
创建目录的时候注意将该目录用sudo chown -R nginx:nginx www/ 将root用户更换为nginx用户

 

接下来看看配置文件怎么写,其实文件名没有所谓,只要以.conf结尾并且防止/etc/nginx/conf.d目录中就行了

文件内容将会是:

#设置 aws.masterchan.me 目录
server{
        listen 80;
        server_name aws.masterchan.me;

        root /var/www/aws.masterchan.me;

        location /{
                index index.html;
        }
}


#设置default目录,这个应该防在后面,让服务器先处理拥有域名的
server{
        listen 80 default_server;  #注意是以default_server  结尾的

        root /var/www/default;

        location /{
                index index.html;
        }

}

 

通常情况下,为了更加方便地管理,可以将重复的部分,例如location /的设定单独保存在一个文件里面,防在不同的目录当中,通过include来引用
这是一个例子

server {
        listen          80 default_server;

        root    /var/www/default;

        include         default.d/location.conf;
        include         default.d/charset.conf;
        include         default.d/error.conf;
        include         default.d/php.conf;
}

 

 

 4.设置SSL(optional)

当然不是很多人都有SSL,不过还是要说一下的,其实就是在Server的大括号里面添加三行吧证书的文件包含进来就行了

        ssl     on;
        ssl_certificate /etc/nginx/ssl.d/ssl.crt;
        ssl_certificate_key     /etc/nginx/ssl.d/mcssl.key;

注意在php fast_cgi 有关的地方开启关于ssl的支持

 

这篇博文发表在 开发运维 | Dev Ops 目录下,标签为 , , ,
如需引用,请使用链接:https://note.mc256.dev/?p=356

This article published in 开发运维 | Dev Ops with tags , , , .
Cite this page using this link:https://note.mc256.dev/?p=356

您的邮箱地址不会被公开,评论使用Gravatar头像。
Your email address will not be published. This blog is using Gravatar.

正在提交评论... Submitting ...
正在为您准备评论控件 Loading Comment Plugin
Copyright © 2013-2024 mc256. All Rights Reserved.
Powered by WordPress on top of a dual-stack k3s Cluster using JuiceFS.
Wordpress Theme Designed By mc256.
Encrypted By Let's Encrypt.  Hosted On Linode + OVH + AWS.
DNS Provided By Hostker.
Status Page by CloudFlare Worker.