1. 程式人生 > >nginx安裝配置代理

nginx安裝配置代理

nginx安裝及配置

環境阿里雲Ubuntu16.04 參考資料:https://www.cnblogs.com/wyd168/p/6636529.html 開始前請確認gcc g++開發類庫是否裝好,預設已經安裝,如果沒有後面會報沒有gcc g++庫的錯 ubuntu平臺編譯環境使用以下指令

apt-get install build-essential
apt-get install libtool

安裝nginx

選定安裝檔案目錄/usr/local/src

  1. 安裝zlib庫 http://zlib.net/zlib-1.2.11.tar.gz 下載最新的 zlib 原始碼包,使用下面命令下載編譯和安裝 zlib包 cd /usr/local/src wget

    http://zlib.net/zlib-1.2.11.tar.gz tar -zxvf zlib-1.2.11.tar.gz cd zlib-1.2.11 ./configure make make install

  2. 安裝openssl(一般都會有,某些vps預設沒裝ssl) cd /usr/local/src wget https://www.openssl.org/source/openssl-1.0.1t.tar.gz tar -zxvf openssl-1.0.1t.tar.gz

  3. 安裝nginx Nginx 一般有兩個版本,分別是穩定版和開發版,您可以根據您的目的來選擇這兩個版本的其中一個,下面是把 Nginx 安裝到 /usr/local/nginx 目錄下的詳細步驟 cd /usr/local/src wget

    http://nginx.org/download/nginx-1.1.10.tar.gz tar -zxvf nginx-1.1.10.tar.gz cd nginx-1.1.10 ./configure make make install 這裡可能出現下面的報錯 make:No rule to make target ‘build’, needed by ‘default’. ubuntu下 apt-get install openssl apt-get install libssl-dev

  4. nginx命令 因為可能apache佔用80埠peizhi,apache埠儘量不要修改,我們選擇修改nginx埠。linux修改路徑/usr/local/nginx/nginx.conf,windows下安裝目錄\conf\nginx.conf修改埠為8080,localhost修改為你伺服器ip地址

啟動 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 停止 ps -ef | grep nginx kill pid 重啟 方法一:進入nginx可執行目錄sbin下,輸入命令./nginx -s reload即可 cd /usr/local/nginx/sbin ./nginx -s reload 方法二:查詢當前nginx程序號,然後輸入命令:kill -HUP程序號,實現重啟nginx服務

nginx配置正向代理

  1. 預設的代理配置
#user  nobody;
worker_processes  4;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    server {
        resolver 192.168.31.1;
        resolver_timeout 5s;
     
        listen 8888;
     
        access_log  /nginx-1.10.3/logs/proxy.access.log;
        error_log   /nginx-1.10.3/logs/proxy.error.log;
     
        location / {
            proxy_pass $scheme://$host$request_uri;
            proxy_set_header Host $http_host;
     
            proxy_buffers 256 4k;
            proxy_max_temp_file_size 0;
     
            proxy_connect_timeout 30;
     
            proxy_cache_valid 200 302 10m;
            proxy_cache_valid 301 1h;
            proxy_cache_valid any 1m;
        }
    }
}

listen就是監聽的埠 resolver就是一個dns地址 上面的配置只能代理http請求,不能代理https請求 2.使用nginx同時代理https和http 這裡需要使用工具包ngx_http_proxy_connect_module https://github.com/chobits/ngx_http_proxy_connect_module

首先確保安裝了patch,gcc,gcc++,pcre,zlib這些依賴庫 這裡我們只缺patch庫 apt-get install patch 然後去github上下載ngx_http_proxy_connect_module模組

然後下載nginx包,解壓得到原始碼檔案 wget http://nginx.org/download/nginx-1.1.10.tar.gz tar -zxvf nginx-1.1.10.tar.gz cd nginx-1.1.10 patch -p1 < /path/to/ngx_http_proxy_connect_module/patch/proxy_connect.patch ./configure --add-module=/path/to/ngx_http_proxy_connect_module make make install 注意其中的/path/to/ngx_http_proxy_connect_module指的就是你從github上,下載的這個模組的存放路徑

然後編輯/usr/local/nginx/conf/nginx.conf,為了不影響其他的配置,使用新增配置檔案的方式來增加配置,新增一行 include /usr/local/nginx/conf/right-proxy.conf 新建right-proxy.conf配置檔案進行配置

server {
     listen                         3128;

     # dns resolver used by forward proxying
     resolver                       8.8.8.8;

     # forward proxy for CONNECT request
     proxy_connect;
     proxy_connect_allow            443 563;
     proxy_connect_connect_timeout  10s;
     proxy_connect_read_timeout     10s;
     proxy_connect_send_timeout     10s;

     # forward proxy for non-CONNECT request
     location / {
         # 配置正向代理引數
         proxy_pass http://$host;
         # 解決URL中帶"."後nginx503錯誤
         proxy_set_header Host $host;
         
         # 配置快取大小,關閉磁碟快取讀寫減少I/O,以及代理連線超時時間
         proxy_buffers 256 4k;
         proxy_max_temp_file_size 0;
         proxy_connect_timeout 30;         

         # 配置密碼認證
         auth_basic "Please enter your password";
         auth_basic_user_file /usr/local/nginx/conf/htpasswd;
     }
}

使用htpasswd,或者使用openssl生成使用者名稱密碼 printf “username:$(openssl passwd -crypt 123456)\n” >> /usr/local/nginx/conf/htpasswd 賬號:username 密碼:123456

重新載入nginx就可以使用nginx正向代理https請求和http請求,同時還需要輸入賬號使用