目录 | Table of Contents
为什么要用nginx 不用Apache,个人感觉其实都差不多,功能都相近。不过跟Apache不同,Nginx 更改了配置需要重新启动服务,看上去好像比Apache要麻烦,实际上,是所有的配置文件都是要经过编译而不像Apache,每一次访问都要读.htaccess。从另外一方面考虑,这提升了服务器性能。还有Nginx 处理并发能力很强,这个就不能够直观地表现出来了,总体来说,Nginx比Apache感觉上要更加轻盈。
AWS已经有Nginx的源了,所以非常方便,直接
sudo yum install nginx
安装完成后启动
sudo service nginx start
接下来访问你的Public IP, 你就可以看到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
主要内容是
- 在用户根目录(/root/ 或者 /home/ec2-user/,因为编辑配置文件要用到管理员权限,所以这里以root举例)新建.vim文件夹
sudo mkdir root/.vim
- 在该.vim文件夹里面新建syntax 文件夹
sudo cd root/.vim sudo mkdir syntax
- 下载代码高亮文件到该文件(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
- 在.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 可以看到基本的设定。
个人的偏好设定是
- 关闭所有的access_log,(access_log是每一个访问者访问都生成一条记录,这个对于小型服务器来说压力或许会比较大)
- 开启gzip 压缩页面
- 将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的支持