<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java學習

    java學習

     

    ngnix得到客戶端的IP

    通常系統出于安全考慮,需要進行權限(賬號、密碼)和IP白名單控制。如何獲取訪問來源真實的IP,如果公司網絡入口設置負載,自己系統設置nginx代理等操作,會使你達到目的不那么簡單直接。

    通常情況下我們使用request.getRemoteAddr()就可以獲取到客戶端ip,但是當我們使用了nginx作為反向代理后,由于在客戶端和web服務器之間增加了中間層,因此web服務器無法直接拿到客戶端的ip,通過$remote_addr變量拿到的將是反向代理服務器的ip地址。如果我們想要在web端獲得用戶的真實ip,就必須在nginx這里作一個賦值操作,如下:
    proxy_set_header            X-real-ip $remote_addr;
    其中這個X-real-ip是一個自定義的變量名,這樣用戶的真實ip就被放在X-real-ip這個變量里了,然后,在web端可以這樣獲取:request.getAttribute("X-real-ip")。但是如果中間經過N次代理過來的請求,X-real-ip就只能獲得到前一層代理的IP(10.6.61.14)了,下面是我的解決方案:



    紅色部分IP是使用X-Forwarded-For(簡稱XFF頭)獲取的:,它代表客戶端,也就是HTTP的請求端真實的IP,只有在通過了HTTP 代理或者負載均衡服務器時才會添加該項(沒有經過的獲取為空)標準格式如下:
    X-Forwarded-For: client1, proxy1, proxy2
    從標準格式可以看出,X-Forwarded-For頭信息可以有多個,中間用逗號分隔,第一項為真實的客戶端ip,剩下的就是曾經經過的代理或負載均衡的ip地址,經過幾個就會出現幾個。
    我的Nginx具體配置如下:


    關于參數含義:
    proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
    意思是
    增加(不是覆蓋一個$proxy_add_x_forwarded_for到X-Forwarded-For里去。
    舉個例子,有一個web應用,在它之前通過了兩個nginx轉發。在第一臺nginx中,使用
    proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
    現在的$proxy_add_x_forwarded_for變量的"X-Forwarded-For"部分是空的,所以只有$remote_addr,而$remote_addr的值是用戶的ip,于是賦值以后,X-Forwarded-For變量的值就是用戶的真實的ip地址了。
    到了第二臺nginx,使用
    proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
    現在的$proxy_add_x_forwarded_for變量,X-Forwarded-For部分包含的是用戶的真實ip,$remote_addr部分的值是上一臺nginx的ip地址,于是通過這個賦值以后現在的X-Forwarded-For的值就變成了“用戶的真實ip,第一臺nginx的ip”。

    所以我在程序中使用request.getHeader("x-forwarded-for").toString().split(",")[0]就能獲取到訪問客戶的真實IP,不用擔心前面有幾層轉發啦。

    posted @ 2018-01-23 11:22 楊軍威 閱讀(248) | 評論 (0)編輯 收藏

    oracle導出數據

    exp qq/1qqq    BUFFER=640000 FILE=/oracleq/appq/oracleq/newq.DMP OWNER=qq

    posted @ 2018-01-17 10:56 楊軍威 閱讀(111) | 評論 (0)編輯 收藏

    ngnix根據客戶端不同的url分發請求

      upstream tomcat_server { server IP地址:端口; }
    upstream authority_server { server IP地址:端口; }
    if ( $request_uri ~ "^\/itoo-basic" )
    {
    proxy_pass   http://tomcat_server;
    }
    if ( $request_uri ~ "^\/itoo-authority" )
    {
    proxy_pass   http://authority_server;
    }

    posted @ 2018-01-16 11:02 楊軍威 閱讀(276) | 評論 (0)編輯 收藏

    linux imp 導入oracle數據

    posted @ 2017-12-19 13:13 楊軍威 閱讀(133) | 評論 (0)編輯 收藏

    linux tomcat startup 禁止

    在Tomcat的bin目錄中執行chmod u+x *.sh

    posted @ 2017-12-19 11:09 楊軍威 閱讀(138) | 評論 (0)編輯 收藏

    linux nginx 安裝

         摘要: 二、安裝Nginx1、上傳nginx-0.7.63.tar.gz至/usr/local 2、執行如下命令解壓nginx:1.#cd /usr/local2.#tar zxvf  nginx-0.7.63.tar.gz3、編譯安裝nginx1.#cd nginx-0.7.632.#./configure --with-http_stub_status_module --with-...  閱讀全文

    posted @ 2017-12-19 10:03 楊軍威 閱讀(116) | 評論 (0)編輯 收藏

    oracle創建刪除表空間、用戶、數據導入導出等常用sql語句

    //連接
    connect /as sysdba

    1.創建表空間和用戶并為用戶指定表空間

    //創建臨時表空間
    create temporary tablespace user_temp tempfile 'D:oracleoradatauser_temp.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; 

    (注:user_temp是臨時表空間的名稱。) 

    //創建數據表空間lportal
    create tablespace lportal logging datafile 'D:oracleoradatalportal.dbf' size 100m autoextend on next 50m extent management local;

    (注:lportal是數據表空間的名稱。) 

    //創建用戶lportal并指定表空間
    create user lportal identified by lportal default tablespace lportal_db temporary tablespace user_temp;

    (注:第一個lportal是用戶名,第二個lportal是密碼;lportal_db是數據表空間名稱,user_temp是臨時表空間名稱。)

    //為lportal用戶授權
    grant connect,resource,dba to lportal;

     

    2.數據備份(導入導出數據)

    //導入數據
    imp lportal/lportal@orcl file=d:lportal20121109.dmp full=Y
    //導出數據
    exp lportal/lportal@orcl file=D:lportal20121109.dmp
    (數據的導入與導出,在進入到黑窗口后直接輸入上列語句,不需要進入sqlplus)

     

    3.刪除用戶及表空間
    //刪除用戶以及用戶所有的對象
    drop user lportal cascade;

    //刪除表空間與表空間文件(注意:如果在創建表空間的時候帶有雙引號,則刪除的時候也要帶上)
    DROP TABLESPACE "stu_new" INCLUDING CONTENTS AND DATAFILES;
    前提:刪除表空間之前要確認該表空間沒有被其他用戶使用之后再做刪除
    drop tablespace zfmi including contents and datafiles cascade onstraints;
    //including contents 刪除表空間中的內容,如果刪除表空間之前表空間中有內容,而未加此參數,表空間刪不掉,所以習慣性的加此參數
    //including datafiles 刪除表空間中的數據文件
    //cascade constraints 同時刪除tablespace中表的外鍵參照

     

    4.查詢表空間和查詢用戶
    //查詢所有表空間名稱
    select tablespace_name from dba_tablespaces;

    //查看表空間的名稱和狀態
    select tablespace_name,status from dba_tablespaces;

    //查詢當前表空間屬性
    select * from dba_tablespaces where tablespace_name='mtgyd';


    //查詢所有用戶
    select username from dba_users;

    posted @ 2017-12-18 16:08 楊軍威 閱讀(158) | 評論 (0)編輯 收藏

    linux下創建表空間,用戶和賦予權限

    1、在某一目錄下面創建存放表空間的目錄,并賦予權限   chmod 777 文件     或者 sudo chmod -R 777  文件
    2、創建臨時表空間  create temporary tablespace USER_TEMP tempfile '/app1/orac1lenamespase/newn1amespase/USER_TEMP1.bdf' size 5120m reuse autoextend on next 20m maxsize unlimited; 
    3.創建表空間    create tablespace ZHFXBEMS1 datafile '/app1/ora1clenamespase/newnames1pase/ZHFXBEMS1.dbf' size 20480M reuse autoextend on next 40M maxsize unlimited default storage(initial 128k next 128k minextents 2 maxextents unlimited);
    4、創建用戶和指定使用的表空間    create user qqidentified by 1 default tablespace ZHFXBEMSq temporary tablespace USER_TEMPq;
    5.賦予權限
    grant dba to qq;
    grant connect,resource to qq;
    grant select any table to qq;
    grant delete any table to qq;
    grant update any table to qq;
    grant insert any table to qq;

    posted @ 2017-12-15 11:57 楊軍威 閱讀(328) | 評論 (0)編輯 收藏

    多線程數據獨立保存

    當多線程訪問資源時,每條線程的數據變量都是不一樣的,線程間的數據需要做到獨立,不能相互共享,例如,數據庫中常見的轉賬業務,兩次轉出和轉入操作,不能共享數據,還要注意線程安全。
    package com.yjw.thread;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Random;
    public class ThreadScopeShareData {
    static class A{
    public void get(){
    System.out.println(" A="+Thread.currentThread().getName()+",data="+map.get(Thread.currentThread()));
    }
    }
    static class B{
    public void get(){
    System.out.println(" B="+Thread.currentThread().getName()+",data="+map.get(Thread.currentThread()));
    }
    }
    static Map<Thread, Integer> map = new HashMap<Thread, Integer>();
    public static void main(String[] args) {
    for (int i = 0; i < 2; i++) {
    new Thread(new Runnable() {
    public void run() {
    int data=new Random().nextInt();
    System.out.println(Thread.currentThread().getName()+",data="+data);
    map.put(Thread.currentThread(), data);
    new A().get();new B().get();
    }
    }).start();
    }
    }
    }

    posted @ 2017-12-12 11:10 楊軍威 閱讀(320) | 評論 (0)編輯 收藏

    springmvc 添加mvc:resources 請求controller失敗

    當使用了mvc:resources標簽后,必須使用 <mvc:annotation-driven/>標簽,就不會請求controller失敗了。

    posted @ 2017-12-11 16:21 楊軍威 閱讀(211) | 評論 (0)編輯 收藏

    僅列出標題
    共43頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 Last 

    導航

    統計

    常用鏈接

    留言簿

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 一区二区三区在线免费| 亚洲国产美女精品久久久| 国产区在线免费观看| 免费一区二区三区四区五区| 亚洲av永久无码精品网址| 国产精品色午夜视频免费看| 福利片免费一区二区三区| 又色又污又黄无遮挡的免费视 | 中文字幕免费在线看线人 | 国产成人精品日本亚洲专区61| 一级全免费视频播放| 亚洲免费人成在线视频观看| 免费一级毛片无毒不卡| 久久久婷婷五月亚洲97号色 | 久久夜色精品国产噜噜亚洲AV| 亚洲视频免费在线看| 男人天堂2018亚洲男人天堂 | 亚洲视频在线免费| 东北美女野外bbwbbw免费| 亚洲av午夜福利精品一区| 精品香蕉在线观看免费| 亚洲中文字幕无码mv| 亚洲成人一区二区| 无码一区二区三区免费| 亚洲jizzjizz在线播放久| 免费一级黄色毛片| 日本免费在线中文字幕| 亚洲国产视频久久| 久久99亚洲综合精品首页| 久久久久久毛片免费播放| 亚洲乱亚洲乱妇无码| 亚洲情综合五月天| 无码人妻久久一区二区三区免费丨| 立即播放免费毛片一级| 亚洲Aⅴ无码专区在线观看q| 一个人看www在线高清免费看 | 久草在视频免费福利| 污视频网站在线免费看| 亚洲午夜精品久久久久久人妖| 永久免费bbbbbb视频| 男人都懂www深夜免费网站|