nginx 에서 rewrite기능을 사용하면 기본적으로 request_uri 가 붙는다..
가령, www.abc.com/test/index.php?a=123 을 아래의 룰로 redirect하면
rewrite ^/test/ / permanent;
www.abc.com/test/?a=123
결과
www.abc.com/?a=123
으로 되어 버린다~
아래와 같이 하면 깔끔하게 해결~
rewiret ^/test/ /? permanent;
www.abc.com/test/?a=123
결과
www.abc.com/
사소하지만 이거 찾는데 시간이 좀 걸렸따아~;ㅋ
ssl 인증서는 서버당 한개의 인증서만 설치됩니다. (기본포트 443)
여러개를 설치하려면,
1. 멀티인증서를 사용한다. 그러나 최소4개의 도메인에 대한 인증서와
만기일을 항상 맞춰야한다는 단점이 있으며, 인증서 추가시 모든인증서를 다시 받아야하는 단점이 있다.
2, 다른방법으로는 ssl 포트번호를 바꾸는방법인데..
기본적으로 http://xxx:444 와 같이 별도 포트로 연결처리를 해야한다.
3. 서버에 IP를 추가할당하여 각각 IP로 인증서설치(nginx에서만 됨)
nginx에서 동일한 ssl 기본포트(443)로 여러개의 인증서를 설치하려면,
기본적으로 서버에 IP를 별도로 할당할 수 있어야합니다~ (아파치에서는 안됨)
$ ifconfig
bce0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=401bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO>
ether 78:2b:cb:4a:74:36
inet 110.x.x.92 netmask 0xffffff00 broadcast 110.92.254.255
inet 110.x.x.93 netmask 0xffffffff broadcast 110.92.254.93
media: Ethernet autoselect (1000baseTX <full-duplex,flowcontrol,master,rxpause,txpause>)
status: active
그다음 nginx.conf 를 아래와 같이 기술
server {
listen 110.x.x.92:443;
server_name www.abc.com;
ssl on;
ssl_certificate cert/chain.crt;
ssl_certificate_key cert/server.key;
..
..
}
server {
listen 110.x.x.93:443;
server_name www.bbc.com;
ssl on;
ssl_certificate cert2/chain.crt;
ssl_certificate_key cert2/server.key;
..
..
}
두IP에 대한 443포트가 띄워져있는걸 볼 수 있네요~
$netstat -na | grep LISTEN
tcp4 0 0 110.x.x.93.443 *.* LISTEN
tcp4 0 0 110.x.x.92.443 *.* LISTEN
nginx로 proxy서버로 사용할때 목적지서버의 404나 403 등의 에러응답코드를
다른것으로 변조하고 싶은경우가 있다.
이럴경우 아래의 코드를 삽입해서 proxy서버에서 직접 콘트롤 가능하게 할 수 있다.
xxx
proxy_intercept_errors on;
error_page 403 /403.jpg;
proxy서버에서 특정페이지로 redirect하거나 여러가지 일을 할 수 있다.
|
Tracked from musica gratis | 2012/05/16 22:38 | DEL
임성진의 블로그입니다~~ - |
502 bad 에러를 내뱉는다..
ajax로 호출하는 페이지에 양이 많을경우( 아마 헤더용량을 넘어선듯..)
nginx.conf에 아래를 추가한다.
fastcgi_buffer_size 128k;
에러가 안난다.. 너무큰가.. 기본값이 4k 인가. 암튼..ㅋ
<? phpinfo() ?> 로 저장후 test.jpg를 올리게 되면
nginx는 uri 뒤에 확장자만 .php면 넘기게 되어 있기때문에 보안에 주의해야합니다.
위의 경로로 test.jpg가 구동되는것을 방지하려면,
if (!-f $request_filename) { return 403; }
혹은
if (!-e $request_filename) { rewrite ^.*$ /index.php last; }
이렇게 구성해주면 됩니다.
통상적인 프레임워크를 쓰기위한 rewite 가 아래와 같이 구성되어 있으면
rewrite ^.*$ /index.php last;
}
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
nginx 쓰면서 가장 보안에 주의해야할 부분입니다.
/usr/local/sbin/php-fpm start
아래와 같은 에러가 나면서 start 스트립트가 멈추지 않는 현상이 나타난다.
vi /usr/local/sbin/php-fpm 의 상단에
php_fpm_CONF=/usr/local/etc/php-fpm.conf
과 같이 pid의 경로를 제대로된 경로로 수정해주니 잘되었따아.. 1시간삽질;;;
만 나올때
를 nginx.conf 에 추가해야한다.;;
lighttpd 웹서버에서 CakePHP 프레임웍 사용할때 lighttpd.conf 셋팅방법입니다.
php.ini 에
추가한다.
lighttpd.conf 의 fastcgi설정에
"broken-scriptfilename" => "enable" 추가한다.
(( "socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/usr/local/bin/php-cgi" ,
"broken-scriptfilename" => "enable"
))
)
lighttpd.conf 의 rewrite 설정
"(css|files|img|js)/(.*)" => "/$1/$2",
"^([^\?]*)(\?(.+))?$" => "/index.php?url=$1&$3",
)
lighttpd를 재가동합니다.
모든 php파일에 include를 추가하지 않고, 자동으로 최상단에
특정 php파일을 include한 효과를 줄 수 있습니다.
php.ini 에
와 같이 추가해주면 됩니다.
아파치에서는 더욱 유연하게 설정됩니다.
php_value auto_prepend_file = /home/httpd/include/auto.php
와 같이 기술하면 되며,
특정 Directory 만 적용한다면 <Directory> 안에 기술하면 되겠네요.ㅎ
nginx 에서는 아래와 같이 적용합니다.
아쉽게도 저는 lighttpd 를 좋아하는데. lighttpd.conf에는 지원되지 않네요
FreeBSD 에서 diskinfo 툴로 돌린값을 비교해보았습니다.
SSD 하드가 단편화문제와 빈번한 read/write에서 수명문제가 있긴하지만
빠르긴하네요..
Seek time 에서는 비교가 안되고, 당연한 결과겠지만 SSD에서는 seek time이
모든 영역에서 동일한 시간을 보이네요..
두서버 모두 raid1 으로 512M cache메모리의 고성능 raid 콘트롤러를 장착하였습니다.
Seek times:
Full stroke: 250 iter in 0.031215 sec = 0.125 msec
Half stroke: 250 iter in 0.031156 sec = 0.125 msec
Quarter stroke: 500 iter in 0.062460 sec = 0.125 msec
Short forward: 400 iter in 0.049768 sec = 0.124 msec
Short backward: 400 iter in 0.050074 sec = 0.125 msec
Seq outer: 2048 iter in 0.262656 sec = 0.128 msec
Seq inner: 2048 iter in 0.251811 sec = 0.123 msec
Transfer rates:
outside: 102400 kbytes in 0.494756 sec = 206971 kbytes/sec
middle: 102400 kbytes in 0.492494 sec = 207921 kbytes/sec
inside: 102400 kbytes in 0.496554 sec = 206221 kbytes/sec
Seek times:
Full stroke: 250 iter in 1.477391 sec = 5.910 msec
Half stroke: 250 iter in 1.423015 sec = 5.692 msec
Quarter stroke: 500 iter in 2.953463 sec = 5.907 msec
Short forward: 400 iter in 1.703787 sec = 4.259 msec
Short backward: 400 iter in 1.731393 sec = 4.328 msec
Seq outer: 2048 iter in 0.489363 sec = 0.239 msec
Seq inner: 2048 iter in 0.382542 sec = 0.187 msec
Transfer rates:
outside: 102400 kbytes in 0.889493 sec = 115122 kbytes/sec
middle: 102400 kbytes in 0.887746 sec = 115348 kbytes/sec
inside: 102400 kbytes in 0.901085 sec = 113641 kbytes/sec

