下文來為各位介紹一篇在linux搭建nginx WEB服務器的教程,如果各位不想使用apache環境了,想用nginx環境就可以和小編一起來看看。
1、下載nginx
命令:wget http://nginx.org/download/nginx-0.8.54.tar.gz
2、解壓
命令:tar zxvf nginx-0.8.54.tar.gz
3、進入目錄
命令:cd nginx-0.8.54
4、安裝依賴包
命令:yum -y install gcc pcre-devel openssl openssl-devel (沒有網絡可在centos中找相關rpm)
5、執行 ./configure
命令:./configure
6、繼續安裝
命令:
make
和
make install
7、啟動nginx服務
命令:/usr/local/nginx/sbin/nginx
8、重啟nginx服務
命令:/usr/local/nginx/sbin/nginx -s reload
9、修改站點的配置文件
命令:vi /usr/local/nginx/conf/nginx.conf
10、多站點設置
⑴、在 /usr/local/nginx/conf/ 下創建 vhost 目錄
命令:mkdir /usr/local/nginx/conf/vhost
⑵、在 /usr/local/nginx/conf/vhost 裡創建一個名字為 linlik.conf 的文件,把站點配置文件寫入(請查看最下面的站點內容)
命令:vi /usr/local/nginx/conf/vhost/linlik.conf
⑶、打開 /usr/local/nginx/conf/nginx.conf 文件,在相應位置加入 include 把以上2個文件包含進來
在頁尾後括號上面加入一句:include vhost/*.conf; 然後保存退出並重啟nginx服務
11、多站點的站點配置文檔內容
如下:
server
{
listen 80;
#listen [::]:80;
server_name jiahaolin.com www.111cn.net;
index index.html index.htm index.php default.html default.htm default.php;
root /www/jiahaolin;
include emlog.conf;
#error_page 404 /404.html;
location ~ [^/]\.php(/|$)
{
# comment try_files $uri =404; to enable pathinfo
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
#include pathinfo.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
access_log /home/wwwlogs/jiahaolin.com.log access;
}
NGINX下如何自定義404頁面
IIS和APACHE下自定義404頁面的經驗介紹文章已經非常多了,NGINX的目前還比較少,為了解決自家的問題特地對此作了深入的研究。研究結果表明,NGINX下配置自定義的404頁面是可行的,而且很簡單,只需如下幾步:
1.創建自己的404.html頁面
2.更改nginx.conf在http定義區域加入: fastcgi_intercept_errors on;
3.更改nginx.conf(或單獨網站配置文件,例如在nginx -> sites-enabled下的站點配置文件 )
中在server 區域加入: error_page 404 /404.html 或者 error_page 404 =http://www.xxx.com/404.html
4.更改後重啟nginx,,測試nginx.conf正確性: /opt/nginx/sbin/nginx –t
#502 等錯誤可以用同樣的方法來配置。
error_page 500 502 503 504 /50x.html;
注意事項:
1.必須要添加:fastcgi_intercept_errors on; 如果這個選項沒有設置,即使創建了404.html和配置了error_page也沒有效果。fastcgi_intercept_errors 語法: fastcgi_intercept_errors on|off 默認: fastcgi_intercept_errors off 添加位置: http, server, location 默認情況下,nginx不支持自定義404錯誤頁面,只有這個指令被設置為on,nginx才支持將404錯誤重定向。這裡需要注意的是,並不是說設置了fastcgi_intercept_errors on,nginx就會將404錯誤重定向。在nginx中404錯誤重定向生效的前提是設置了fastcgi_intercept_errors on,並且正確的設置了error_page這個選項(包括語法和對應的404頁面)
2.不要出於省事或者提高首頁權重的目的將首頁指定為404錯誤頁面,也不要用其它方法跳轉到首頁。
3.自定義的404頁面必須大於512字節,否則可能會出現IE默認的404頁面。例如,假設自定義了404.html,大小只有11個字節(內容為:404錯誤)。
Nginx 配置安裝以及一些常遇到的錯誤
nginx 編譯安裝 一、安裝nginx時必須先安裝相應的編譯工具
yum -y install gcc gcc-c++ autoconf automake
yum -y install zlib zlib-devel openssl openssl-devel pcre-devel
建立nginx 組
groupadd -r nginx
useradd -s /sbin/nologin -g nginx -r nginx
id nginx
zlib:nginx提供gzip模塊,需要zlib庫支持
openssl:nginx提供ssl功能
pcre:支持地址重寫rewrite功能
Nginx 官網下載地址: http://nginx.org/ 最新版 http://nginx.org/download/nginx-1.5.2.tar.gz
二、tar -zxvf nginx-1.2.8.tar.gz
三、cd nginx-1.2.8
配置
四、./configure \
--prefix=/usr \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--pid-path=/var/run/nginx/nginx.pid \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/tmp/nginx/client \
--http-proxy-temp-path=/var/tmp/nginx/proxy \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi \
--with-http_stub_status_module
或者使用默認的 直接 ./configure
編譯並且安裝
五、make && make install
編譯完成後 make install 進行安裝 安轉後就大功告成拉
小結:centos沒有安裝make編譯器
解決:yum -y install gcc automake autoconf libtool make
重啟動命令 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 更多參考 nginx --help
nginx 的配置以及常見小問題 如下:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 錯誤解決
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
問題描述:地址已被使用。可能nginx服務卡死了,導致端口占用,出現此錯誤。
解決方法:首先用lsof:80看下80端口被什麼程序占用。lsof返回結果如下:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 3274 root 6u IPv4 10664 0t0 TCP *:http (LISTEN)
nginx 3547 nginx 6u IPv4 10664 0t0 TCP *:http (LISTEN)
發現是nginx程序,所以我們把nginx服務k掉,重新啟動服務。。命令如下:
kill -9 3274
kill -9 3547
或者 killall -9 nginx
從新載入配置文件啟動 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
啟動成功了但是發現一個錯誤信息
[warn]: 51200 worker_connections are more than open file resource limit: 51200
雖然不是致命的問題 不影響nginx運行 但是看起來很煩人 我們來解決一下
nginx.conf 配置問題
events {
use epoll;
worker_connections 51200; // 這裡出的問題
}
問題原因是 Linux的最大文件數限制。修改Linux 文件數限制 ulimit -n 51200
[root@localhost ~]# ulimit -n
[root@localhost ~]#
接下來從新載入配置文件重啟動Ok了....
nginx error_log 錯誤日志配置說明
nginx的error_log類型如下(從左到右:debug最詳細 crit最少):
[ debug | info | notice | warn | error | crit ]
例如:error_log logs/nginx_error.log crit;
解釋:日志文件存儲在nginx安裝目錄下的 logs/nginx_error.log ,錯誤類型為 crit ,也就是記錄最少錯誤信息;
注意error_log off並不能關閉日志記錄功能,它將日志文件寫入一個文件名為off的文件中,如果你想關閉錯誤日志記錄功能,應使用以下配置:
error_log /dev/null crit;
把存儲位置設置到Linux的黑洞中去
同樣注意0.7.53版本,nginx在讀取配置文件指定的錯誤日志路徑前將使用編譯的默認日志位置,如果運行nginx的用戶對該位置沒有寫入權限,nginx將輸出如下錯誤:
[alert]: could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied) log_not_found 語法:log_not_found on | off
默認值:on
使用字段:location
這個參數指定了是否記錄客戶端的請求出現404錯誤的日志,通常用於不存在的robots.txt和favicon.ico文件,例如: location = /robots.txt { log_not_found off; }
最後:所有nginx配置發生改變時,最好都使用如下命令測試配置是否錯誤後再使用 -s reload 重載
# /usr/local/nginx/sbin/nginx –t
說明:
1、# 代表root權限,不用輸入
2、以上是nginx的默認安裝路徑,如果改變了要相應的修改哦,例如 wdcp 的 lanmp 一鍵安裝包 則如需要用如下命令
# /www/wdlinux/nginx/sbin/nginx -s reload
輸入後如果提示如下,則表示配置無誤:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
這時再使用重載命令讓Nginx平滑的重新加載配置即可,而不會影響正常訪問:
# /usr/local/nginx/sbin/nginx -s reload