New FAMILUG

The PyMiers

Showing posts with label nginx. Show all posts
Showing posts with label nginx. Show all posts

Sunday, 5 February 2017

Dựng HTTP server bằng một câu lệnh

Đôi khi ta cần dựng 1 HTTP server, trong một nháy mắt 😎
Để:
- xem nội dung 1 file html
- chia sẻ file siêu tốc (tất nhiên không an toàn, ai có link cũng tải được)

Giải pháp:
- mọi giải pháp cần file config như NGINX, Apache đều bị loại do vượt quá yêu cầu thiết lập dưới 1 phút.

Các giải pháp được đề cử 😍

busybox

Nếu không có sẵn trên máy
# apt-get install -y busybox
$ busybox httpd -f -p 9999 -h
-f : chạy foreground
-p: port
-h: home, thư mục sẽ phục vụ, mặc định là thư mục hiện tại
Khi truy cập vào IP:9999, ta sẽ nhận được response 404 nếu không có file index.html nào trong thư mục được phục vụ. Để truy cập các file khác, ta phải tự chọn trên URL chứ không có danh sách.
Ví dụ: để tải file destroy.mp4 trong thư mục phục vụ , truy cập vào http://IP:9999/destroy.mp4

Twisted 

là một Python package
trước tiên phải cài twisted:
$ pip install twisted
$ twistd -n web -p 8080 --path .
Truy cập IP:8080 sẽ nhận được danh sách các file trong thư mục chỉ ra bởi --path

Python2

$ python -m SimpleHTTPServer 8000
Khi truy cập vào IP:8000 ta sẽ thấy danh sách các file của thư mục ta chạy câu lệnh.

Python 3

Sunday, 29 May 2016

SNI - giải pháp chạy nhiều SSL/TLS cert trên cùng 1 IP

Câu hỏi: có thể chạy nhiều trang web (khác domain) dùng HTTPS trên cùng 1 host không?
Câu chuyện: nhà nghèo phải host nhiều site trên cùng 1 host mà mỗi site cần một SSL/TLS cert thì phải làm sao?
Trả lời: SNI - Server Name Indication
Làm sao dùng được SNI:
kiểm tra xem webserver có hỗ trợ SNI không, phiên bản OpenSSL đã hỗ trợ SNI chưa.

Tại thời điểm hiện tại thì câu trả lời cơ bản là có:
# nginx -V
nginx version: nginx/1.7.9
built by gcc 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
TLS SNI support enabled
...
các phiên bản openssl từ 0.9.8j trở lên đều mặc định hỗ trợ SNI. Với Ubuntu 14.04, không cần phải lo nghĩ về chuyện này:
$ openssl version
OpenSSL 1.0.1f 6 Jan 2014
SNI là gì? sao lại cần?

Tuesday, 5 August 2014

[NGINX] luật matching khi chọn location để xử lý 1 request

Syntax: location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
khi nhận được 1 request, NGINX cần chọn location để xử lý request đó, quá trình này gọi là matching.

Vài từ khoá
Các dấu = ~ ~* ^~ gọi là các modifier.
Một location có thể được định nghĩa bởi một "prefix string" hoặc regular expression (regex - nếu không biết regex là gì hãy Google, giải thích khái niệm này nằm ngoài tầm của bài viết).
location /images  {
} # là một location dùng "prefix string"

location ~* \.(gif|jpg|jpeg)$ {
} # là một location dùng regex.
Regex
Để sử dụng các regex, cần dùng modifier ~ hoặc ~*.
~ : regex matching có phân biệt hoa thường. Tức
location meomeo
khác với
location MeoMeo
~*: regex matching không phân biệt hoa thường.

Thứ tự xử lý

Wednesday, 23 October 2013

NGINX beginner

NGINX là gì?
nginx [engine x] is an HTTP and reverse proxy server, as well as a mail proxy server, written by Igor Sysoev.
là một HTTP/reverse proxy/mail proxy server được viết để giải quyết bài toán C10K, hiện tại là một trong 2 HTTP server phổ biến nhất trên nền UNIX-like OSes. (theo http://wiki.nginx.org/Main )

Làm thế nào để trở thành một NGINX beginner?
Có nhiều cách, sau đây là 1 cách vớ vẩn nhất:
- Cài nginx
- Đọc http://nginx.org/en/docs/beginners_guide.html


Đó không phải là cách để giúp bạn config nginx thành 1 reverse-proxy nhanh nhất, hay cấu hình để nginx chạy website PHP của bạn ngay lập tức. Nhưng là một tài liệu phải đọc nếu bạn dùng NGINX.

Có gì hay?
- Một ít kiến thức về SIGNAL
- Syntax config của NGINX
- Biết cách dùng các directive để config NGINX

Trích vài đoạn hay ho:

Saturday, 16 March 2013

FAMILUG guide to web server

serve - server

tớ không thích cách dịch phổ biến :  "web server" -> "máy chủ web". Nên trong bài này tớ sẽ dùng nguyên từ web server.

Tớ có mấy câu hỏi nhờ mọi người trả lời giúp:
Biết apache2 là 1 web server
Biết cái máy tính dùng làm máy chủ thì gọi là server
vậy cái server cài apache2 thì gọi là gì ?
và cái server cài apache2 + mail server thì gọi là gì?

Theo  http://oxforddictionaries.com/definition/english/serve?q=serve
serve (v) : perform duties or services for (another person or an organization):
phục vụ

server(n) : a person or thing that serves.
là danh từ chỉ người  / vật thực hiện việc phục vụ ấy. (tạm dịch gọn là "kẻ" phục vụ)

vậy web server hiểu đơn giản là một software phục vụ (các) trang web. Người dùng sẽ sử dụng client (web browser chẳng hạn, ví dụ Firefox) để truy cập tới web server để được phục vụ nội dung trang web.