安裝Nginx
Nginx下載網站:http://nginx.org/ ,根據需要下載版本,一般提供兩種版本stable
版本和mainline
版本,在實際生產環境中建議使用stable
版本,此次下載安裝的版本爲:nginx-1.10.3.tar.gz
。配置環境爲ubuntu-16.10-server-amd64
系統。
文件目錄在Ubuntu目錄下自己新建的/myapp/soft/目錄下(此目錄也可以在安裝Ubuntu系統的時候手動分區建立自己的工作空間)。以下爲安裝配置過程:
Nginx文件的存放目錄:
解壓使用:tar -xzf nginx-1.10.3.tar.gz
解壓到當前目錄,結果如下。
root@shmily:/myapp/soft# ls
apache-tomcat-8.5.13.tar.gz mysql-server_5.7.17-1ubuntu16.04_amd64.deb-bundle.tar nginx-1.10.3.tar.gz
jdk-8u121-linux-x64.tar.gz nginx-1.10.3
root@shmily:/myapp/soft#
安裝之前先執行更新:
apt-get install update
安裝Nginx所需要的類庫:
apt-get install gcc libpcre3 libpcrecpp0v5 libpcre3-dev libssl-dev
然後進入軟件安裝目錄,即二進制文件目錄(手動創建的目錄):
root@shmily:/myapp# ls
bin lost+found soft webroot
root@shmily:/myapp# cd bin
root@shmily:/myapp/bin#
在此目錄下新建nginx文件夾:
root@shmily:/myapp/bin# mkdir nginx
root@shmily:/myapp/bin# ls
jdk nginx tomcat tomcat02
root@shmily:/myapp/bin# cd nginx
root@shmily:/myapp/bin/nginx#mkdir logs conf fastcgi_temp sbin client_body_temp proxy_temp uwsgi_temp scgi_temp
root@shmily:/myapp/bin/nginx# ls
client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp
執行完成之後退出此目錄,然後回到soft目錄下:
root@shmily:/myapp# cd soft
root@shmily:/myapp/soft# ls
apache-tomcat-8.5.13.tar.gz mysql-server_5.7.17-1ubuntu16.04_amd64.deb-bundle.tar nginx-1.10.3.tar.gz
jdk-8u121-linux-x64.tar.gz nginx-1.10.3
root@shmily:/myapp/soft# cd nginx-1.10.3
root@shmily:/myapp/soft/nginx-1.10.3# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE Makefile man objs README src
root@shmily:/myapp/soft/nginx-1.10.3#
接着執行以下命令進行Nginx的安裝:
./configure --prefix=/myapp/bin/nginx/ --sbin-path=/myapp/bin/nginx/sbin/ --with-http_ssl_module --conf-path=/myapp/bin/nginx/conf/nginx.conf --pid-path=/myapp/bin/nginx/logs/nginx.pid --error-log-path=/myapp/bin/nginx/logs/error.log --http-log-path=/myapp/bin/nginx/logs/access.log --http-fastcgi-temp-path=/myapp/bin/nginx/fastcgi_temp --http-client-body-temp-path=/myapp/bin/nginx/client_body_temp --http-proxy-temp-path=/myapp/bin/nginx/proxy_temp --http-uwsgi-temp-path=/myapp/bin/nginx/uwsgi_temp --http-scgi-temp-path=/myapp/bin/nginx/scgi_temp
上面命令執行成功之後,執行以下命令,成功執行說明Nginx安裝成功:
root@shmily:/myapp/soft/nginx-1.10.3# make;make install
安裝成功之後回到 /myapp/bin/nginx
目錄下,進入該目錄下的sbin
,啓動Nginx,直接執行./nginx
啓動服務,使用ps -ef|grep nginx
查看當前啓動的進程,如下:
root@shmily:/myapp/bin/nginx# ls
client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp
root@shmily:/myapp/bin/nginx# cd sbin
root@shmily:/myapp/bin/nginx/sbin# ls
nginx
root@shmily:/myapp/bin/nginx/sbin# ./nginx
...
root@shmily:/myapp/bin/nginx/sbin#
root@shmily:/myapp/bin/nginx/sbin# ps -ef|grep nginx
root 4518 1 0 16:16 ? 00:00:00 nginx: master process ./nginx
nobody 4524 4518 0 16:16 ? 00:00:00 nginx: worker process
root 4679 1639 0 16:47 pts/0 00:00:00 grep --color=auto nginx
root@shmily:/myapp/bin/nginx/sbin#
成功之後可以在遠程測試連接,成功界面如下:
nginx配置使用
- 配置文件
nginx/conf/nginx.conf
- http{ …… }部分,HTTP服務設置,全局設置
include mime.types
; #文件擴展名不文件類型映射表default_type application/octet-stream
; #默認文件類型sendfile on
; #開啓高效文件傳輸模式,sendfile
指令指定nginx
是否調用sendfile
函數來輸出文件,對於普通應用設爲on
,如果用來進行下載等應用磁盤IO
重負載應用,可設置爲off
,以平衡磁盤不網絡I/O
處理速度,降低系統的負載。
注意:如果圖片顯示不正常把這個改成off
。keepalive_timeout 120
; #長連接超時時間,單位是秒
- 配置文件
nginx/conf/nginx.conf
- server{ …… }部分,虛擬主機的配置
- listen 80; #監聽端口
server_name www.xxx.com
; #域名可以有多個,用空格隔開index index.html index.jsp
; #默認訪問頁面root /www/webSite/xxx
; #默認站點路徑error_page 500 502 503 504/50x.html
; #默認錯誤內容展示頁
Nginx + Tomcat 配置使用
Tomcat配置
首先需要進行Tomcat集羣配置,用兩個Tomcat作爲實例,實際過程中可以使用多個Tomcat,在進行Tomcat配置過程中,先查看是否有Tomcat進程存在,使用ps -ef|grep tomcat
,如果有進程,使用kill -9 進程號
結束Tomcat進程。之後複製Tomcat,使用cp tomcat tomcat02
進行復制,可依次複製多個Tomcat。原始Tomcat不需要端口修改,但是需要在server.xml文件中增加web項目配置路徑,server.xml文件路徑:
root@shmily:/myapp/bin/tomcat/conf# ls
Catalina catalina.properties jaspic-providers.xml logging.properties server.xml20170506 tomcat-users.xsd
catalina.policy context.xml jaspic-providers.xsd server.xml tomcat-users.xml web.xml
修改server.xml文件,增加如下內容,其他不用做任何修改:
<Context path="" docBase="/myapp/webroot/mldn2" debug="0" reloadable="true"></Context>
完成之後,進入tomcat02目錄下的conf目錄下:
修改server.xml
文件,需要做如下修改:
如果還有有多個Tomcat配置按照上面依次配置就可以,途中圈出來的部分是需要修改的內容,如有三個則第三個的server port
爲8007
.依次類推進行修改即可。修改完成之後,重新啓動Tomcat服務,正常啓動說明修改正確。
Nginx配置
修改nginx/conf/nginx.conf
文件裏的server,如上圖中的location / {}
中的內容,註釋以下內容:
# root html;
# index index.html index.htm;
在下面新增如下配置:
proxy_pass http://127.0.0.1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #後端服務器可以通過X-Forwarded-For獲取真實IP
proxy_max_temp_file_size 0; #設置臨時緩存大小
proxy_connect_timeout 90; #nginx跟後端服務器連接超時時間(代理連接超時)
proxy_send_timeout 90; #後端服務器數據回傳時間(代理髮送超時)
proxy_read_timeout 90; #連接成功後,後端服務器響應時間(代理接收超時)
proxy_buffer_size 4k; #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小
proxy_buffers 4 32k; #proxy_buffers緩衝區,網頁平均在32k以下的設置
proxy_busy_buffers_size 64k; #高負荷下緩衝大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #設定緩存文件夾大小
修改完成保存退出,回到sbin目錄,執行以下命令:
./nginx -t //測試Nginx腳本
./nginx -s reload //重啓Nginx
Nginx負載均衡配置
增加upstream項,在http中
#gzip on;
upstream myServer {
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}
down:表示單前的server暫時不參與負載
weight:默認爲1,weight越大,負載的權重就越大。
backup:其它所有的非backup機器down或者忙的時候,請求backup機器
修改Nginx中server裏面的location內容
proxy_pass http://myServer;
修改完成保存退出,回到sbin目錄,執行以下命令:
./nginx -t //測試Nginx腳本
./nginx -s reload //重啓Nginx
完整修改文件內容如下:
http {
include 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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream myServer {
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
# root html;
# index index.html index.htm;
proxy_pass http://myServer;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #後端服務器可以通過X-Forwarded-For獲取真實IP
proxy_max_temp_file_size 0; #設置臨時緩存大小
proxy_connect_timeout 90; #nginx跟後端服務器連接超時時間(代理連接超時)
proxy_send_timeout 90; #後端服務器數據回傳時間(代理髮送超時)
proxy_read_timeout 90; #連接成功後,後端服務器響應時間(代理接收超時)
proxy_buffer_size 4k; #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小
proxy_buffers 4 32k; #proxy_buffers緩衝區,網頁平均在32k以下的設置
proxy_busy_buffers_size 64k; #高負荷下緩衝大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #設定緩存文件夾大小
}