6月7日
12.6 Nginx安裝
wget http://nginx.org/download/nginx-1.12.1.tar.gz
./configure --prefix=/usr/local/nginx
ls /usr/local/nginx/ //檢視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
進入nginx配置檔案目錄,將原nginx.conf 檔案備份,命名為字尾.bak
新建並新增如下內容到配置檔案中:寫入如下內容(參考 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; } } }
/usr/local/nginx/sbin/nginx -t
ls /usr/local/nginx/html/ //頁面檔案目錄
vim /usr/local/nginx/html/1.php
配置如下內容: <?php echo "This is nginx test page."; ?>
12.7 預設虛擬主機
Nginx預設虛擬主機
在Nginx中也有預設虛擬主機,跟httpd類似,第一個被Nginx載入的虛擬主機就是預設主機,但和httpd不相同的地方是,它還有一個配置用來標記預設虛擬主機,也就是說,如果沒有這個標記,第一個虛擬主機為預設虛擬主機。
1.. 編輯配置檔案:
vim /usr/local/nginx/conf/nginx.conf
增加以下內容: include vhost/*.conf;
如下圖
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; }
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 //重新載入配置
5.使用curl測試
curl localhost
curl -x127.0.0.1:80 123.com
curl -x127.0.0.1:80 ddd.com
解釋說明:
訪問的域名無論是指定的aaa.com還是其它域名,只要解析過來,指向到我們伺服器,都能訪問到這個站點,這就是預設虛擬主機。
12.8 Nginx使用者認證.
1. 建立一個虛擬主機配置檔案
vim /usr/local/nginx/conf/vhost/test.com.conf
2.建立生成密碼檔案
yum install -y httpd //為了可以使用Apache的htpasswd工具建立使用者
htpasswd -c /usr/local/nginx/conf/htpasswd aming
htpasswd /usr/local/nginx/conf/htpasswd cfk
(如果還要生成第二個使用者密碼檔案,把-c去掉即可,如果不去掉的話就是重置密碼的意思)
3.測試語法及重新載入配置
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
4.使用curl命令測試使用者認證
curl -x127.0.0.1:80 test.com
curl -x127.0.0.1:80 test.com -I
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
5.針對目錄的使用者認證
vim /usr/local/nginx/conf/vhost/test.com.conf
進入配置檔案,在location後面加上目錄名字就可以
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,需要認證
curl -x127.0.0.1:80 -uaming:123123 test.com/admin///使用使用者密碼訪問正常
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;
}
}
最終配置
//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
curl -x127.0.0.1:80 test2.com/index.html/adgagadga -I //訪問test2.com後會跳轉到test.com
curl -x127.0.0.1:80 test3.com/index.html -I //訪問test3.com就跳轉到預設虛擬主機,
轉載於:https://blog.51cto.com/404006045/2126191