在CentOS 6.5操作系统上安装和配置Nginx是一个相对简单的过程,但需要一定的步骤来确保成功,以下是详细的步骤指南:
Nginx的安装与配置
1. 安装必要的依赖包
在安装Nginx之前,需要先安装一些依赖包,这些包包括gcc
、pcre
、zlib
和openssl
,这些包可以通过YUM仓库进行安装:
yum install gccc++ pcre pcredevel zlib zlibdevel openssl openssldevel y
2. 下载Nginx源码
从官方网站下载Nginx的源码包,可以选择一个稳定版本,例如1.9.9:
cd /usr/local wget http://nginx.org/download/nginx1.9.9.tar.gz
3. 解压源码包
下载完成后,解压源码包:
tar zxvf nginx1.9.9.tar.gz
4. 编译和安装Nginx
进入解压后的目录,并运行配置、编译和安装命令:
cd nginx1.9.9 ./configure prefix=/usr/local/nginx make make install
5. 启动Nginx服务
进入安装目录并启动Nginx服务:
/usr/local/nginx/sbin/nginx
6. 验证安装
通过浏览器访问服务器IP地址或域名,如果看到"Welcome to nginx!"页面,说明Nginx安装成功。
Nginx的基本配置
1. 配置文件位置
Nginx的主配置文件位于/usr/local/nginx/conf/nginx.conf
,可以根据需要进行修改,例如设置监听端口、日志文件等。
2. 常用配置示例
以下是一个基本的Nginx配置示例,用于设置一个简单的静态网站:
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octetstream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
Nginx作为反向代理服务器的配置
Nginx不仅可以作为静态和动态网站的服务器,还可以作为反向代理服务器,以下是一个简单的反向代理配置示例:
http { upstream backend { server backend1.example.com; server backend2.example.com; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header XRealIP $remote_addr; proxy_set_header XForwardedFor $proxy_add_x_forwarded_for; proxy_set_header XForwardedProto $scheme; } } }
Nginx的防火墙配置
为了允许外部访问Nginx,需要在防火墙中开放80端口(HTTP)和443端口(HTTPS):
/sbin/iptables I INPUT p tcp dport 80 j ACCEPT /sbin/iptables I INPUT p tcp dport 443 j ACCEPT /etc/rc.d/init.d/iptables save
Nginx添加到系统服务
为了使Nginx能够在系统启动时自动启动,可以将其添加到系统服务中:
vi /etc/init.d/nginx
在文件中添加以下脚本:
#!/bin/bash nginx Startup script for the Nginx HTTP Server it is v.0.0.2 version. chkconfig: 85 15 description: Nginx is a highperformance web and proxy server. It has a lot of features, but it's not for everyone. processname: nginx pidfile: /var/run/nginx.pid config: /usr/local/nginx/conf/nginx.confnginxd=/usr/local/nginx/sbin/nginx nginx_config=/usr/local/nginx/conf/nginx.conf nginx_pid=/var/run/nginx.pid RETVAL=0 prog="nginx" Source function library. . /etc/rc.d/init.d/functions Source networking configuration. . /etc/sysconfig/network Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ x $nginxd ] || exit 0 Start nginx daemons functions. start() { if [ e $nginx_pid ];then echo "nginx already running...." exit 1 fi echo n $"Starting $prog: " daemon $nginxd c ${nginx_config} RETVAL=$? echo [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx return $RETVAL } Stop nginx daemons functions. stop() { echo n $"Stopping $prog: " killproc $nginxd RETVAL=$? echo [ $RETVAL = 0 ] && rm f /var/lock/subsys/nginx /var/run/nginx.pid } reload nginx service functions. reload() { echo n $"Reloading $prog: " killproc $nginxd HUP RETVAL=$? echo return $RETVAL }
保存文件后,赋予执行权限:
chmod +x /etc/init.d/nginx chkconfig add nginx service nginx start
常见问题解答(FAQs)
Q1: Nginx启动失败,提示“nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)”怎么办?
A1: 这个错误通常是由于非特权用户尝试绑定到80端口导致的,可以使用以下方法解决:
1、修改Nginx配置文件中的用户,将user
指令改为当前用户:
user root; # or any other user with sufficient privileges
2、或者以root用户身份启动Nginx:
sudo /usr/local/nginx/sbin/nginx c /usr/local/nginx/conf/nginx.conf
3、确保防火墙和SELinux没有阻止Nginx绑定端口,可以使用以下命令关闭SELinux(不推荐长期使用):
setenforce 0
Q2: 如何更改Nginx的默认根目录?
A2: 要更改Nginx的默认根目录,可以编辑主配置文件nginx.conf
,找到server
块中的root
指令并修改为新的路径。
server { listen 80; server_name localhost; location / { root /new/path/to/root; # 修改此处为你的新根目录路径 index index.html index.htm; } }
保存配置文件后,重新加载Nginx配置:
/usr/local/nginx/sbin/nginx s reload