1. 程式人生 > 實用技巧 >6月7日

6月7日

12.6 Nginx安裝


1. 進入存放原始碼包目錄

cd /usr/local/src/

2. 下載原始碼包

wget http://nginx.org/download/nginx-1.12.1.tar.gz

3. 解壓壓縮包

tar zxvf nginx-1.12.1.tar.gz

4. 安裝nginx

cd nginx-1.12.1

./configure --prefix=/usr/local/nginx

5. 編譯nginx

make

make install

ls /usr/local/nginx/ //檢視nginx核心配置檔案

blob.png

6. 建立nginx配置檔案及編輯啟動指令碼

vim /etc/init.d/nginx

配置如下內容: #!/bin/bash # chkconfig: - 30 21 # description: http service. # Source Function Library . /etc/init.d/functions # Nginx Settings NGINX_SBIN="/usr/local/nginx/sbin/nginx" NGINX_CONF="/usr/local/nginx/conf/nginx.conf" NGINX_PID="/usr/local/nginx/logs/nginx.pid" RETVAL=0 prog="Nginx" start() { echo -n $"Starting $prog: " mkdir -p /dev/shm/nginx_temp daemon $NGINX_SBIN -c $NGINX_CONF RETVAL=$? echo return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc -p $NGINX_PID $NGINX_SBIN -TERM rm -rf /dev/shm/nginx_temp RETVAL=$? echo return $RETVAL } reload() { echo -n $"Reloading $prog: " killproc -p $NGINX_PID $NGINX_SBIN -HUP RETVAL=$? echo return $RETVAL } restart() { stop start } configtest() { $NGINX_SBIN -c $NGINX_CONF -t return 0 } case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) restart ;; configtest) configtest ;; *) echo $"Usage: $0 {start|stop|reload|restart|configtest}" RETVAL=1 esac exit $RETVAL

7.修改啟動指令碼許可權

chmod 755 /etc/init.d/nginx

8. 新增nginx服務

chkconfig --add nginx

9. 設定開機啟動

chkconfig nginx on

chkconfig --list

blob.png

10. 配置nginx的配置檔案

cd /usr/local/nginx/conf/

blob.png

進入nginx配置檔案目錄,將原nginx.conf 檔案備份,命名為字尾.bak

mv nginx.conf nginx.conf.bak

vim nginx.conf

新建並新增如下內容到配置檔案中:寫入如下內容(參考 https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/nginx.conf

新增以下配置

user nobody nobody; worker_processes 2; error_log /usr/local/nginx/logs/nginx_error.log crit; pid /usr/local/nginx/logs/nginx.pid; worker_rlimit_nofile 51200; events { use epoll; worker_connections 6000; } http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 3526; server_names_hash_max_size 4096; log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]' ' $host "$request_uri" $status' ' "$http_referer" "$http_user_agent"'; sendfile on; tcp_nopush on; keepalive_timeout 30; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; connection_pool_size 256; client_header_buffer_size 1k; large_client_header_buffers 8 4k; request_pool_size 4k; output_buffers 4 32k; postpone_output 1460; client_max_body_size 10m; client_body_buffer_size 256k; client_body_temp_path /usr/local/nginx/client_body_temp; proxy_temp_path /usr/local/nginx/proxy_temp; fastcgi_temp_path /usr/local/nginx/fastcgi_temp; fastcgi_intercept_errors on; tcp_nodelay on; gzip on; gzip_min_length 1k; gzip_buffers 4 8k; gzip_comp_level 5; gzip_http_version 1.1; gzip_types text/plain application/x-javascript text/css text/htm application/xml; server { listen 80; server_name localhost; index index.html index.htm index.php; root /usr/local/nginx/html; location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/tmp/php-fcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; } } }

11. 測試配置檔案語法

/usr/local/nginx/sbin/nginx -t

blob.png

12. 開啟Nginx服務

/etc/init.d/nginx start

blob.png

13.檢視nginx服務程序和埠是否啟動

ps aux |grep nginx

netstat -lntp |grep 80

blob.png

14.測試Nginx解析php

ls /usr/local/nginx/html/ //頁面檔案目錄

blob.png

vim /usr/local/nginx/html/1.php

配置如下內容: <?php echo "This is nginx test page."; ?>

14.1 使用curl測試

curl localhost/1.php

blob.pngspacer.gif

12.7 預設虛擬主機

Nginx預設虛擬主機

Nginx中也有預設虛擬主機,跟httpd類似,第一個被Nginx載入的虛擬主機就是預設主機,但和httpd不相同的地方是,它還有一個配置用來標記預設虛擬主機,也就是說,如果沒有這個標記,第一個虛擬主機為預設虛擬主機。

1.. 編輯配置檔案:

vim /usr/local/nginx/conf/nginx.conf

增加以下內容: include vhost/*.conf

如下圖

blob.png

2. 建立一個vhost目錄

mkdir /usr/local/nginx/conf/vhost

cd /usr/local/nginx/conf/vhost/

vim aaa.conf //進入vhost目錄下並建立編輯一個.conf檔案

增加如下內容: server { listen 80default_server; // 有這個標記的就是預設虛擬主機 server_name aaa.com; index index.html index.htm index.php; root /data/wwwroot/default; }

blob.png

3.建立default目錄

mkdir -p /data/wwwroot/default/

cd /data/wwwroot/default/

vim index.html

default目錄下的index.html檔案中定義如下內容:

This is the default site.

4.測試語法,重新載入配置檔案(不需要重啟服務)

/usr/local/nginx/sbin/nginx -t

/usr/local/nginx/sbin/nginx -s reload //重新載入配置

blob.png

5.使用curl測試

curl localhost

curl -x127.0.0.1:80 123.com

curl -x127.0.0.1:80 ddd.com

blob.png

解釋說明:

訪問的域名無論是指定的aaa.com還是其它域名,只要解析過來,指向到我們伺服器,都能訪問到這個站點,這就是預設虛擬主機。

12.8 Nginx使用者認證.

1. 建立一個虛擬主機配置檔案

vim /usr/local/nginx/conf/vhost/test.com.conf

blob.png

2.建立生成密碼檔案

yum install -y httpd //為了可以使用Apachehtpasswd工具建立使用者

htpasswd -c /usr/local/nginx/conf/htpasswd aming

htpasswd /usr/local/nginx/conf/htpasswd cfk

(如果還要生成第二個使用者密碼檔案,把-c去掉即可,如果不去掉的話就是重置密碼的意思)

blob.png

3.測試語法及重新載入配置

/usr/local/nginx/sbin/nginx -t

/usr/local/nginx/sbin/nginx -s reload

blob.png

4.使用curl命令測試使用者認證

curl -x127.0.0.1:80 test.com

curl -x127.0.0.1:80 test.com -I

blob.png

curl -x127.0.0.1:80-uaming:123123 test.com -I //加使用者訪問,指定使用者和密碼

mkdir /data/wwwroot/test.com //建立使用者目錄

echo “test.com”>/data/wwwroot/test.com/index.html //test.com目錄下編輯index.html

curl -x127.0.0.1:80 -uaming:aming test.com

blob.png

5.針對目錄的使用者認證

vim /usr/local/nginx/conf/vhost/test.com.conf

進入配置檔案,在location面加上目錄名字就可以

blob.png

5.1測試語法及重新載入配置

/usr/local/nginx/sbin/nginx -t

/usr/local/nginx/sbin/nginx -s reload

5.2 使用curl測試:

curl -x127.0.0.1:80 test.com //訪問網站正常

curl -x127.0.0.1:80 test.com/admin //訪問admin目錄出現401,需要認證

blob.png

curl -x127.0.0.1:80 -uaming:123123 test.com/admin///使用使用者密碼訪問正常

blob.png

12.9 Nginx域名重定向

1, 更改test.com.conf

內容如下:

server

{

listen 80;

server_name test.com test1.com test2.com;

index index.html index.htm index.php;

root /data/wwwroot/test.com;

if ($host != 'test.com' ) {

rewrite ^/(.*)$ http://test.com/$1 permanent;

}

}

最終配置

blob.png

//server_name後面支援寫多個域名,這裡要和httpd的做一個對比

//permanent為永久重定向,狀態碼為301,如果寫redirect則為302

2. 測試語法及重新載入配置

/usr/local/nginx/sbin/nginx -t

/usr/local/nginx/sbin/nginx -s reload

3.使用curl測試

curl -x127.0.0.1:80 test2.com/index.html -I //訪問test2.com後會跳轉到test.com

blob.png

curl -x127.0.0.1:80 test2.com/index.html/adgagadga -I //訪問test2.com後會跳轉到test.com

blob.png

curl -x127.0.0.1:80 test3.com/index.html -I //訪問test3.com就跳轉到預設虛擬主機,

blob.png





轉載於:https://blog.51cto.com/404006045/2126191