nginx 跟 Apache 的作用差不多,都是提供 WEB 服务,但 nginx 相对于 Apache 来说,在性能上有更好的体现,而 Apache 有稳定性方面会比 nginx 好一些,所以要用哪一个,自己喜欢就好。下面就给大家分享下 nginx 的安装及配置方法。如果你觉得下面记录的东西有点乱,你可以直接看本文后面的总结也是可以的,更省时,更省心。我在这里。
如果你直接执行命令
# yum install nginx
你会得到这样的提示
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.yun-idc.com
* extras: mirrors.tuna.tsinghua.edu.cn
* rpmforge: mirrors.neusoft.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
No package nginx available.
Error: Nothing to do
No package nginx available.(找不到 nginx 安装包),所以我们得配置下,让系统自动去帮你去下载,执行如下代码
# vim /etc/yum.repos.d/nginx.repo
如果没有这个文件(一般没有),系统会自动为你新建一个,按下键盘i进入编辑模式,复制下面的内容粘贴到文件里,按Esc键退出编辑模式,按 :wq 保存退出。
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
还果你的系统是centos 7.2以上的,那么你就直接执行如下命令行就可以了
# yum install nginx
现在直接输入下面的命令行进行安装,你就会如入无人之境,一路畅通无阻。
# yum install nginx
下面就是 nginx 的安装过程的全记录
[root@niaoyun53098 ~]# yum install nginx
Loaded plugins: fastestmirror
nginx | 2.9 kB 00:00
nginx/7/x86_64/primary_db | 14 kB 00:01
Loading mirror speeds from cached hostfile
* base: mirrors.yun-idc.com
* extras: mirrors.tuna.tsinghua.edu.cn
* rpmforge: mirrors.neusoft.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package nginx.x86_64 1:1.10.1-1.el7.ngx will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
nginx x86_64 1:1.10.1-1.el7.ngx nginx 640 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 640 k
Installed size: 2.1 M
Is this ok [y/d/N]: y
Downloading packages:
nginx-1.10.1-1.el7.ngx.x86_64.rpm | 640 kB 01:03
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : 1:nginx-1.10.1-1.el7.ngx.x86_64 1/1
----------------------------------------------------------------------
Thanks for using nginx!
Please find the official documentation for nginx here:
* http://nginx.org/en/docs/
Commercial subscriptions for nginx are available on:
* http://nginx.com/products/
----------------------------------------------------------------------
Verifying : 1:nginx-1.10.1-1.el7.ngx.x86_64 1/1
Installed:
nginx.x86_64 1:1.10.1-1.el7.ngx
Complete!
至此 nginx 已经安装完成,如果你觉得上面的代码太多太乱,也不要紧我为你精炼出来
# yum install nginx
不多久你要你输入 y 确认完成安装
Is this ok [y/d/N]: y
输入完 y 后坐等 “Complete!”就行了。
浏览器输入主机IP测试,但显示无法访问此网页,为什么?因为你忘记了启动 nginx 服务了,就下面的一行命令
# systemctl start nginx.service
启动服务之后,你刷新下页面就会出现如下贺电:
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.Thank you for using nginx.
随服务器启动
# systemctl enable nginx.service
重启 nginx 服务
# systemctl restart nginx.service
停止 nginx 服务
# systemctl stop nginx.service
查看 nginx 运行状态
# systemctl status nginx.service
到这里,你就可以使用 nginx 服务了。你可以通过如下命令在站点根目录下新建一个index.html文件(站点下默认会有一个,覆盖就好)
# echo "我是站点默认根目录下的测试页面" >> index.html
浏览器输入 IP 访问时,页面出现乱码了,这是什么原因呢?是我们没有给页面设置编码格式,因为一般页面都会有形如
lang="en">
charset="UTF-8">
nginx 配置 我是站点默认根目录下的测试页面
其中 就是声明页面编码格式。我们先找到刚才编辑的index.html
# vi /usr/share/nginx/html/index.html
按i进入编辑模式,先清空刚才的文字,然后把上面一段 HTML 代码复制到 index.html 就可以了。刷新浏览器页面时就不会出现乱码了。
nginx 默认的根目录为/usr/share/nginx/html,如果你不喜欢你可以更改成自己设定的目录,例如:/home/www/nginx.yunkus.com
1.创建站点目录
# mkdir -p /home/www/nginx.yunkus.com
目录创建好后,我们可以在站点目录里新建一个index.html 作为测试。
# echo "我是 nginx 自定义站点根目录" >> /home/www/nginx.yunkus.com/index.html
接下来我们就得配置下 nginx 的配置文件了
在修改配置文件前,我们得先复制一份用于配置的文件
# cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/nginx.yunkus.com.conf
复制完成后,我们就得去配置下 nginx.yunkus.com.conf (这个文件名可以随便到,只要自己能知道里面是什么就行)了
vi /etc/nginx/conf.d/nginx.yunkus.com.conf
初次打开后,你会看到如下代码:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
server_name:主机名。如果你没有绑定域名,或者只是想测试下,那么 server_name localhost; 你可以不用动它,接着对 location /{ ….. }里面的内容进行修改,修改 root /home/www/nginx.yunkus.com;
如果你网站首页是 index.php,那么你还得在下面这里添加默认打开的文件格式location /{ ..... }
追加 index.php,配置完成之后如下,如果你想把404页面的根目录也改成/home/www/nginx.yunkus.com的话,你只需要在对应的location = 50x.html{ ….. }里重复上面的步骤就可以了。
server {
listen 80;
server_name yunkus.com;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
root /home/www/nginx.yunkus.com;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
但可能还无法成功访问,可能你还得修改下另一个配置文件
# vi /etc/nginx/nginx.conf
定位到倒数第二行 include /etc/nginx/conf.d/*.conf;
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
把include /etc/nginx/conf.d/*.conf;
改成include conf.d/*.conf;
,完成这一步后,再试试,应该就没问题了。如果还访问不了,可以是因为防火墙没有添加 80 端口规则。
# vi /etc/sysconfig/iptables
按 i 进入编辑模式
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
后面追加一行
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
加完后,按Esc退出编辑模式,输入:wq保存退出。接着记得重启下防火墙服务
# systemctl restart iptables.service
备注:
文章中涉及到目录操作的都是先 cd 到根目录后再执行命令行的,这样只是为了让你更加直观的看到各个目录的相对位置。
更新于:21:41 2017/2/7
花了这么多钱买个服务器肯定不想让它闲着,比如:配置多个虚拟主机。多个虚拟主机什么意思?就是你可以放多个网站。现在假设我们安装的 nginx 版本为1.10.2
,php的版本为7.0.15
,我们就可以切换到/etc/nginx/conf.d/
目录,然后在此新建一个文件touch nginx.yunkus.com.conf
, 这个文件名随便你起只要是.conf
后缀就行,文件弄好之后vim nginx.yunkus.com.conf
,打开文件后按i进入编辑模式,把下以这段代码复制进去。Esc即出编辑模式,然后:wq退出保存。
server{
listen 80;
server_name yunkus.com;
root /home/www/nginx.yunkus.com;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
前面三行代码就是设置监听端口为80,这个目录绑定域名为yunkus.com
,这个目录位于/home/www/nginx.yunkus.com
。而下面的那一块代码就是让nginx 能够识别 php 文件。如果你不加,当你通过:yunkus.com/index.php
访问时,就会直接把这个index.php
文件下载到本地并且无法正常浏览网站页面。如果还想添加一个站点重复上面的步骤就可以了。
更新于:0:32 2017/4/4
换成了博客自带的主题后,垃圾评论一直都停不下来,人为手动打广告还是可以接受的,但是一个晚上几分钟来一条广告评论,一看就是程序直接写入数据库的。见鬼去吧(永别了)!
我的做法就是直接禁止这个 ip 访问网站服务,具体做法也很简单:
在 /etc/nginx/conf.d 目录下新建一个 .conf 文件,命名随意(如:getlost.conf );在这个文件里添加你想禁止的ip就可以了。
// 禁止某个网段
deny 91.200.12.0/24;
deny 178.122.94.0/24;
// 禁止指定 ip
deny 27.150.247.255;
// 禁止所有
deny all;
这个你可以按需添加,能起到效果就好了,最后一种应该不常用。
注意
文件修改完后记得重启 nginx 服务
systemctl restart nginx.service
重启完后,当这个ip 再访问时,就会返回如下图:
这个 403 页面返回了Forbidden 字样,还显示了nginx及其版本号,所以在这里我们可以通过配置 nginx.conf 文件,不显示 nginx 的版本号。
在 nginx.conf 的 http 区块中(http{…… })中添加如下一行代码:
server_tokens off; // 关闭版本号显示功能
更新于:22:08 2017/3/5
上面写了那么多其实都只是自己折腾的过程,但我也相信你看到上面的一大段东西肯会觉得好乱,不知道从何开始。下面我就来总结下。
步骤一:安装
# yum install nginx
步骤二:配置:
配置 nginx 的方法,非常的简单。在/etc/nginx/conf.d/
目录下新建一个名为nginx.yunkus.com.conf
的文件(文件名随意,后缀名为.conf
就 OK ),文件内容如下:
server{
listen 80;
server_name yunkus.com;
root /home/www/nginx.yunkus.com;
index index.php index.html;
location / {
# This is cool because no php is touched for static content.
# include the "?$args" part so non-default permalinks doesn't break when using query string
try_files $uri $uri/ /index.php?$args;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
提示:
server_name yunkus.com; // 改成你自己的域名
root /home/www/nginx.yunkus.com; // 改成你自己的站点根目录
重启nginx服务就可以了:
systemctl restart nginx.service
步骤三:若要配置多个站点重复上面的步骤二就可以了。
如果配置出问题,那现在你就可以往回看了,按照上面提到的问题一个一个进行排查。
上面只是这次更新顺便把前面乱糟糟的东西的总结,下面才是这次更新的主要内容。
最近博客开启了自带的评论,虽然也安装了Akismet 反垃圾评论插件,实现了垃圾评论的判断,但这往不能让人满意。因为你会收到很多垃圾评论,所以在这里我们得学着用 nginx 来实现配置 ip 段来禁止其不法访问。
在/etc/nginx/conf.d/
目录下新那一个名为denyip.conf
的文件,文件名可以随便取,编辑文件内容如下:
// 禁止 91.200.12.1~91.200.12.255 网段访问网站
deny 91.200.12.0/24;
注意:最后的分号;
不能省。文件配置好后,重启下 nginx 服务就可以了。
systemctl restart nginx.service