linux下nginx的安裝及配置


 

一、安裝nginx前,我們首先要確保系統安裝了g++、gcc、openssl-devel、pcre-devel和zlib-devel軟件,可通過如圖所示命令進行檢測,如果以安裝我們可以通過圖二所示卸載:

yum install gcc-c++
yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel

## 如果已安裝,則remove掉
yum remove nginx

 

wget https://nginx.org/download/nginx-1.11.3.tar.gz

  我們一般安裝linux軟件都會在/usr/local目錄下,然后進行解壓編譯安裝:

tar -zxvf nginx-1.11.3.tar.gz

mv nginx-1.11.3 /usr/local/nginx-1.11.3
./configure --prefix=/usr/local/nginx
## 安裝到/usr/local/nginx的nginx目錄下
make
make install

  

此時安裝成功:

此時源碼包和安裝后的包都有了,進入到nginx目錄下,(一般要不要修改源碼包,再make make install,需要看修改什么)

 

如上,進入到sbin/nginx,啟動即可。

二、配置和說明:

接下來介紹下啟動/停止/重啟的具體方法,進入目錄后我們可以用執行sbin/nginx來啟動,也可以通過conf/nginx.conf來啟動,停止我們可以查詢進程使用kill -9 進程號/pkill -9 nginx來結束nginx服務,重啟可以通過 sbin/nginx -s reload來重啟,具體命令大家請看如圖所示

 三、nginx的開發實例

在nginx.conf文件增加代碼

gzip  on;
include ../conf.d/*.conf;

這樣就可以在conf.d文件夾下添加配置文件,例如

server{
     listen 80;
     server_name felab.**.com;
     root /home/project/RDFELabClient/;
}

/usr/local/nginx/sbin/nginx -t試下是否配置有問題

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successfu

  重啟綁定host就可以正式訪問了

 四、把nginx設置全局變量

ln -s /usr/local/nginx/sbin/nginx /usr/sbin/

/usr/local/nginx/sbin/nginx是nginx的啟動命令

/usr/sbin/就是環境變量目錄

  

五、如果修改的配置在執行發生下面的錯誤

  nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"或者修改配置不生效

service nginx restart #不生效

  嘗試執行下

/usr/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

 

六、nginx的端口代理

server {
listen 80;
server_name fcdn.**.com;
index index.html index.htm index.php;
root /home/www/fcdn.**.com;



location ~ .*\.(ttf|otf|eot|woff|woff2|svg)$
{
add_header Access-Control-Allow-Origin "*";
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
add_header Access-Control-Allow-Origin "*";
}


location ~ .*\.(js|css)?$
{
expires 12h;
}

access_log /home/nginx/logs/fcdn.xesimg.com.log main ;
}

  

server {
    listen       80;                        # 監聽端口
    server_name npm.xxx.com;    # 站點域名
    index index.html index.htm index.php;   # 默認導航頁
      location / {
                    proxy_pass http://127.0.0.1:4873/;
                    proxy_redirect off;
                    proxy_set_header X-Real-IP $remote_addr;
                    #后端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    #以下是一些反向代理的配置,可選。
                    proxy_set_header Host $host;
                    client_max_body_size 10m;
                    client_body_buffer_size 128k;
        }
  
      location ~ ^/verdaccio/(.*)$ {
        proxy_pass http://127.0.0.1:4872/$1;
        proxy_set_header Host            $host:$server_port;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
  error_page 500 502 503 504  http://www.xxx.com/Errors.htm;
}

  

 七、websocket的配置

如果報“failed: Error during WebSocket handshake: Unexpected response code: 400”錯誤,可能是nginx的配置關鍵參數沒有。

server{
        listen 80;
        server_name fedata.xxx.com;
        location / {
                 proxy_pass    http://127.0.0.1:7002;
                 proxy_http_version 1.1;
                 proxy_set_header Upgrade $http_upgrade;
                 proxy_set_header Connection "Upgrade";
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
         }
}  
代理webSocket的關鍵參數
proxy_set_header Upgrade 把代理時http請求頭的 Upgrade 設置為原來http請求的請求頭,ws協議的請求頭為 websocket
proxy_set_header Connection 因為代理的ws協議,所以http請求頭的 Connection設置為 Upgrade
proxy_set_header X-Real-IP 給代理設置原http請求的ip,填寫 $remote_addr 即可
至於websocket協議的response的參數,在反向代理的時候不用管。
到這里,Nginx反向代理webSocket的配置就完成了,重啟Nginx,用websocket連接試試,如果websocket成功連接,說明Nginx反向代理websocket已經成功了.

 

8、nginx 的upsteam實現負載

upstream app.**.com {
   server backend1.example.com     weight=5;
    server 127.0.0.1:8080           max_fails=3 fail_timeout=30s;
    server unix:/tmp/backend3;

    server backup1.example.com:8080 backup;
}

server {
      listen 80;
      server_name app.**.com;
      access_log /home/nginx/logs/app.xueersi.com_access.log main;
      error_page 500 502 503 504  http://www.xueersi.com/wait.html;
    #   include /home/openresty/nginx/conf/nconf/xueersissl.conf;
      location / {
          set $upstream 'app.**.com';
          proxy_pass http://$upstream;
          add_header 'Access-Control-Allow-Origin' '$http_origin';
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_redirect off;
          client_max_body_size 500m;
          client_body_buffer_size 128k;
          proxy_ignore_client_abort on;
          proxy_connect_timeout 60;
          proxy_send_timeout 60;
          proxy_read_timeout 60;
          proxy_buffer_size 128k;
          proxy_buffers 32 32k;
          proxy_busy_buffers_size 128k;
          proxy_temp_file_write_size 128k;
          proxy_next_upstream off;
          add_header Xes-App $upstream_http_server;
      }
}

  weight=number設定服務器的權重,默認是1。max_fails=number設定Nginx與服務器通信的嘗試失敗的次數。在fail_timeout參數定義的時間段內,如果失敗的次數達到此值,Nginx就認為服務器不可用。在下一個fail_timeout時間段,服務器不會再被嘗試。 失敗的嘗試次數默認是1。設為0就會停止統計嘗試次數,認為服務器是一直可用的。

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM